Существует функция AppendLastSlashIfNotExist
Я сделал.
Сегодня я решил сделать еще одну функцию AppendLastBackSlashIfNotExist
Как удалить дублирование в этом простом коде?
wstring AppendLastSlashIfNotExist(__in const wstring& path)
{
if (path == L"/")
{
return path;
}
if (path.size() == 0 || path[path.size() - 1] != L'/')
{
return path + L"/";
}
return path;
}
wstring AppendLastBackSlashIfNotExist(__in const wstring& path)
{
if (path == L"\\")
{
return path;
}
if (path.size() == 0 || path[path.size() - 1] != L'\\')
{
return path + L"\\";
}
return path;
}
Да, это отстой. Только Slash ->BackSlash - это изменение. Я хотел удалить дубликаты.
wstring AppendLastSlashIfNotExist(__in const wstring& path, bool backSlash)
{
if (path == (backSlash ? L"\\" : L"/"))
{
return path;
}
if (path.size() == 0 || path[path.size() - 1] != (backSlash ? L'\\' : L'/'))
{
return path + (backSlash ? L"\\" : L"/");
}
return path;
}
Я объединил их. Дублирование удалено. Но появился дополнительный параметр. Я все еще чувствую себя некомфортно. Нет ли других способов удалить дублирование? Например, используя функцию высокого порядка.
Любая идея, пожалуйста.
Я полагаю, что вместо использования этих функций вы должны включить класс Path. В вашем пути к классу вы будете следить за действительностью строки пути. Используйте концепцию OO. – AlexTheo
Укажите значение по умолчанию для 'bool backSlash = false'. – atoMerz