Open alexey-malov opened 9 years ago
size_t Min(size_t a, size_t b);
чем не удовлетворил std::min?
bool ParseURL::StringToProtocol(std::string protocolStr, Protocol &protocol)
{
std::transform(protocolStr.begin(), protocolStr.end(), protocolStr.begin(), tolower);
if (protocolStr == "http")
{
protocol = Protocol::HTTP;
return true;
}
if (protocolStr == "https")
{
protocol = Protocol::HTTPS;
return true;
}
if (protocolStr == "ftp")
{
protocol = Protocol::FTP;
return true;
}
return false;
}
можно объявить статичекий map или вообще массив пар, в котором задать соответствие между строковым представлением протокола и его перечислимым типом. Искать можно при помощи map.find либо по вектору при помощи find_if. Получится не длинее, а вот добавить новый протокол без увеличения объема кода будет проще
document = remains.substr(slashIndex + 1, std::string::npos);
второй аргумент метода substr опционален и равен по умолчанию npos
Чтобы внутри файла реализации не писать каждый раз std:: можно написать в после #include-ов внутри .cpp файла using namespace std;
Следующее замечание не обязательно для реализации, но рекомендуемо для изучения: Есть в стандартной библиотеке файл regex, в котором можно регулярные выражения использовать для разбора урла по частям. Может получиться короче. Но нужно потратить время на изучение
В интерфейсе взаимодействия с пользователем при вводе невалидного урла желательно сообщать об этом пользователю
k=0,75 за исполнение 1,0 за срок
Если вставить пустые строки между функциями, то это улучшит читаемость кода и ни капли не повлияет на производительность приложения.
В заголовочном файле следует оставлять только те функции, которые требуются извне. Все остальное можно спрятать в .cpp файле