Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Использование в похожих по синтаксису языках (например Java и C)
одного стиля отступов и метода наименования сущностей
Тестами покрывается абсолютно весь код, включая сторонние библиотеки
Особое внимание при проверках уделяйте пользовательскому вводу и внешним ресурсам
Нагромоздить 20 классов, использовать 12 разных паттернов, реализовать свой DSL для парсинга другого DSL, создать кроссплатформенный фреймворк для визуализации циклических графов для создания очередного тетриса — это про “поборников абстракции”.
избегание ловушек — это ходьба узкой дорожке, где слева — проблемы, а справа — пути их решения, доведенные до абсурда.
> переписываешь пусть работающие но написанные не тобой куски кода, злобная защита своих тактик и стратегий даже в ущерб движению проекта вперед.
Золотой молоток — это вредная привычка. После того, каккакой-либо метод сработал при решении нескольких задач, попавшийся в ловушку начинает использовать этот метод везде, где только можно!
Есть несколько схожих терминов — панацея, волшебная таблетка, серебряная пуля,т. е. такой метод, который всегда,в 100% случаев выполняет любую задачу. Ещё одна имеющая к этой теме поговорка — забивать гвозди микроскопом.
Золотой молоток — довольно часто встречающаяся, но совершенно непохожая на другие ловушка. Золотым молотком может быть всё что угодно,кто-то может влюбиться в ООП и писать классы на каждый чих,кто-то в паттерны проектирования и построить программу из одних лишь фабрик и синглтонов.
Для кого-то золотой молоток — это любимый язык программирования,для кого-то — любимая парадигма,для кого-то — методология разработки.
Главное, что выделяет золотой молоток — попытка использовать его всегда и везде.
Признаки того, что вы в ловушке• Использование одного языка программирования для всех задач
• Вера в то, что одна парадигма может решить все проблемы программирования (чаще всего так говорят про ООП и ФП)
• Использование для всех проектов, независимо от условий, одной методологии разработки, например бездумное использование TDD во всех проектах
• Применение какого-либо средства, предоставляемого языком для большей части задач, например:
– Передача всех аргументов только по константной ссылке
– Использование во всей программе лишь одного типа коллекций, скажем массивов (векторов)
– Использование повсюду немутабельных объектов
– Использование в похожих по синтаксису языках (например Java и C) одного стиля отступов и метода наименования сущностей
Серебряной пули не существует
Я боюсь, что эта ловушка — исключение из правил и возможно ее избежать не рискуя попасть в другую.
Это исключение из замеченной мною закономерности еще раз доказывает, что золотого молотка не существует — мой метод описания ловушки как двойственной сущности дал осечку, но я не боюсь отказаться от его использования.
Это и есть правильный путь освобождения из этой ловушки.
Со za nadto, to nezdrowo — Что чересчур, то не идёт на пользу
И наоборот — некоторые программисты пишут софт, который запустится только на той-же ОС, что и у автора, более того, нужна точно такая-же мышь, клавиатура и шлем виртуальной реальности.
Стремление к совершенству
По этой теме все было разжевано и до меня, однако я хочу быть последовательным, поэтому также разберу по косточкам и эту ловушку.
Почти любую проблему в коде можно решить ведением дополнительного уровня абстракции. Исключение составляет проблема слишком большого количества уровней абстракции.
Вера в то, что O(n) вместо O(n^{2}) или замена всех операций умножения на 2 на побитовый сдвиг сделают из программы конфетку
Мой опыт мне показывает, что как раз главное в коде — читаемость и поддерживаемость (при условии его работоспособности)
Поиск недостатков в любом коде
Неидеальный, но близкий к идеальному код можно написать за разумное время.
Я понимаю, что автор подразумевает посвящение избыточного кол-ва времени на всё это, но перфекционизм не так плох, если это выражается в высоких требованиях к качеству кода
8 ловушек программирования