Влажные мечты разработчиков...
Ну вот, теперь ему придется заставлять себя писать говнокод, даже если есть очевидное нормальное решение, чтобы не вызвать парадоксов :-)
С ударенной головой плохо думать, это событие стало причиной говнокода.
Даже больше, он не научится писать нормально не изучив говнокод.
Прошу народ, объясните суть говнокода и хорошего кода, просто для меня коды в программировании сложны в понимании.
Хорошо, а как бы это сделал нормальный человек?
Если обычный АСКИ, то задал бы if на сравнение с диапазоном кодов букв. Или бы просто использовал библиотечную функцию
Аски коды?
Даже если абстрагироваться от библиотечных функций и диапазона символов - можно было объявить статический массив из букв и сделать 1 проверку на принадлежность массиву вместо 26 кейсов (или 52 если с верхним регистром)
Ветвление в цикле??? Страаааашна.
Если массивом и ascii, то немного не так. Делается заранее массив, где код символа - номер элемента массива. Каждый элемент заполняется типом литерала, например a[65]=1, где 65 - это ascii код символа "А". После этого в процессе разбора строки подставляем код символа в индекс массива и получаем тип.
Стрельба в ногу чистой воды:)
С чего бы?
> Хорошо, а как бы это сделал нормальный человек?
bool IsBukva(char symbol) {
return isalpha(symbol);
}
bool IsBukva(char symbol) {
return isalpha(symbol);
}
Ну, это при условии, что нам нужно проверить только на принадлежность к символам. А если проверить, относится ли символ к латинице, и, быть может, даже находится ли буква в том или ином регистре. Потому, в зависимости от задачи, этого решения может быть недостаточно. А код, который мы видим на картинке, проверяет только на принадлежность к строчным латинским буквам от a до m. Потому, по умолчанию, задача решается в пределах имеющейся информации.
P.S. Никогда не недооценивай способность пользователя неправильно понимать и использовать любую программу, всегда делай ошибочное использование физически невозможным. Просто диву порою даешься тому, что могут ввести пользователи в инпут.)
P.S. Никогда не недооценивай способность пользователя неправильно понимать и использовать любую программу, всегда делай ошибочное использование физически невозможным. Просто диву порою даешься тому, что могут ввести пользователи в инпут.)
Ок, [a-z] :-)
Если символы аски то в php и js ord(char) > 127 это уже не буквы (латиницы). в С и java достаточно просто преобразовать тип, (int) char, если больше 127 то это не буква (латиницы). Если нужны другие языки, нужно просто модифицировать проверку другими диапазонами.
Почему нет goto?
Если абстрагироваться от учебников, где написано, что goto - плохо, то само по себе использование в нужном месте делает куда проще жизнь. Само собой, таких мест немного, и конкретно здесь лучше сделать с массивом, как писали выше, но goto само по себе не есть плохо.
А ещё Goto упрощает реверс-инжиниринг, каким бы не казалось это странным... Что, впрочем, волнует только программистов действительно мощных контор.
А вне этого goto плохо только по двум причинам:
1. Путает код, делая его поддержку невообразимо сложной.
2. Позволяет недопустимые выходы из процедур, что, зачастую, губит проверки и ограничения, позволяя случаться разным неприятным исключениям.
А вне этого goto плохо только по двум причинам:
1. Путает код, делая его поддержку невообразимо сложной.
2. Позволяет недопустимые выходы из процедур, что, зачастую, губит проверки и ограничения, позволяя случаться разным неприятным исключениям.
В каждом языке программирования - говнокод имеет разные ипостаси, смысл в том что когда ты берешься за свой код спустя энное количество времени, ты хватаешся за голову, плачешь, вытераешь свои кровавые слёзы, немного ностальгируешь, иронично улыбаешься, пару раз передергиваешь, в качестве зарядки, и начинаешь писать все заново. Тоже самое и если говнокод чужой, разве что настольгия превращается в острое желание убивать. Вся мякотка в том, что любой нормальный кодер когда-то писал говнокод - это аксиома. Поэтому все мы, в прошлом, настоящем и будущем - говнокодеры для нас самих в зависимости от определенного промежутка временного континуума.
Ты написал плохой код:
- никто кроме тебя не способен понять как он работает
- ты не заглядывал в этот код 2-3 недели и теперь, заглянув, ты и сам не в силах понять как он работает
- ты не можешь добавить в этот код какую-нибудь новую фичу/функцию, это слишком сложно
- ты все-же добавил новую функцию, но при этом сломал старые (наплодил новых багов) - теперь фикси
Ты написал хороший код:
- твой код понятен тебе, тебе из будущего и твоим коллегам
- добавление новых фич простое и удобное (а также не ломает старые)
- за счет написанного ранее кода, при добавления новой фичи, ты пишешь меньше нового кода и меньше его тестируешь
- любой отдельный блок проекта ты можешь легко заменить, как запчасть, не переписывая остальные блоки
- никто кроме тебя не способен понять как он работает
- ты не заглядывал в этот код 2-3 недели и теперь, заглянув, ты и сам не в силах понять как он работает
- ты не можешь добавить в этот код какую-нибудь новую фичу/функцию, это слишком сложно
- ты все-же добавил новую функцию, но при этом сломал старые (наплодил новых багов) - теперь фикси
Ты написал хороший код:
- твой код понятен тебе, тебе из будущего и твоим коллегам
- добавление новых фич простое и удобное (а также не ломает старые)
- за счет написанного ранее кода, при добавления новой фичи, ты пишешь меньше нового кода и меньше его тестируешь
- любой отдельный блок проекта ты можешь легко заменить, как запчасть, не переписывая остальные блоки
Потому, белые люди предпочитают модулярную систему написания кода. Это не всегда хорошо, но поддерживать такой код на порядок удобнее.)
Чтобы написать коммент, необходимо залогиниться