Избавляемся от недостатков классического ООП и пишем на С++ в модульном стиле.
Читать полностью »
Рубрика «Совершенный код» - 47
Снижение компонентной связности кода С++
2014-06-16 в 6:50, admin, рубрики: c++, ioc, pimpl, Проектирование и рефакторинг, Совершенный код, метки: c++, ioc, pimpl Сколько было сломано копий при обсуждении вопроса «Возможно ли сделать eval
безопасным?» — невозможно сосчитать. Всегда находится кто-то, кто утверждает, что нашёл способ оградиться от всех возможных последствий выполнения этой функции.
Когда мне понадобилось найти развёрнутый ответ на этот вопрос, я наткнулся на один пост. Меня приятно удивила глубина исследования, так что я решил, что это стоит перевести.
Коротко о проблеме
В Python есть встроенная функция eval()
, которая выполняет строку с кодом и возвращает результат выполнения:
assert eval("2 + 3 * len('hello')") == 17
Это очень мощная, но в то же время и очень опасная инструкция, особенно если строки, которые вы передаёте в eval
, получены не из доверенного источника. Что будет, если строкой, которую мы решим скормить eval
'у, окажется os.system('rm -rf /')
? Интерпретатор честно запустит процесс удаления всех данных с компьютера, и хорошо ещё, если он будет выполняться от имени наименее привилегированного пользователя (в последующих примерах я буду использовать clear
(cls
, если вы используете Windows) вместо rm -rf /
, чтобы никто из читателей случайно не выстрелил себе в ногу).
Читать полностью »
Больше стихов в коде — Code Poetry Slam 1.1
2014-03-24 в 10:32, admin, рубрики: Apache, ruby, литература, ненормальное программирование, поэзия, Совершенный код, стихи, стихи в коде, метки: apache, c++, ruby, литература, поэзия, стихи, стихи в коде
27 февраля в Стэнфорде состоялся второй по счету конкурс поэтов, пишущих стихи на различных языках программирования — Code Poetry Slam 1.1. В отличии от стихотворений, упоминавшихся в прошлой заметке, конкурс не зацикливается на стихах в общепринятом смысле этого слова, во главу угла ставится само выступление автора, то, как он преподносит свою историю.
Читать полностью »
Концепция АТД
2014-03-22 в 14:32, admin, рубрики: java, архитектура приложений, АТД, класс, ооп, проектирование, Проектирование и рефакторинг, Совершенный код, метки: архитектура приложений, АТД, класс, ооп, проектирование, совершенный кодДоброго времени суток, читатели!
Следующий пост является изложением моих размышлений на тему природы классов и АТД. Эти размышления дополнены интересными цитатами из книг гуру разработки программного обеспечения.
Введение
Начнем с того, что плавно подойдем к определению АТД. АТД, в первую очередь, представляет собой тип данных, что означет следущее:
наличие определенных доступных операций над элементами этого типа;
а также данные, относительно которых эти операции выполняются (диапазон значений).
Об организации кода в django-приложениях или толстые модели – это прекрасно
2014-02-26 в 6:53, admin, рубрики: django, python, конкретно вы прочитали теги, организация кода, Совершенный код, толстые модели- Тем, кто еще не задумывался о таких вопросах
- Тем, кто уже имеет собственные взгляды на организацию логики, но не против оценить альтернативные варианты
- Тем, кто уже использует обсуждаемый подход, для подтверждения своих мыслей
- Тем, кто уже не использует обсуждаемый подход и имеет аргументы против
Большого количества кода не будет, статья по большей части дискуссионная. Энжой)
Плагин поиска дублирующегося кода для QtCreator
2014-02-25 в 18:31, admin, рубрики: c++, plugin, qt, Qt Software, QtCreator, quality assurance, Совершенный код, метки: plugin, Qt, qtcreator, quality assurance
Дублирующийся код осложняет внесение изменений, понимание исходных текстов и их дальнейшее сопровождение. Для того, чтобы избежать дублирования, а также для оценки качества кода и его рефакторинга, в составе некоторых IDE есть встроенные средства для поиска повторяющихся фрагментов кода. Для других IDE написаны плагины. Однако для среды разработки QtCreator до настоящего момента ни встроенных средств, ни плагинов поиска повторов не было.
В статье описывается два решения задачи автоматического поиска дубликатов в данной IDE: с помощью средства интеграции сторонних утилит и с помощью разработанного плагина, который надеюсь будет полезен программистам C++, использующим QtCreator.
Читать полностью »
Красивый код: какой он?
2014-02-04 в 11:47, admin, рубрики: красивый код, опрос, Программирование, разработка, Совершенный код, метки: красивый код, опросНедавно ребята из Яндекса опубликовали статью, в которой рассказали, что же такое красивый код по их мнению. Однако, для каждого из них «красота» это нечто свое, и не совсем понятно, от чего именно это зависит. Интересно было бы узнать, что именно аудитория Хабра называет «красивым кодом», и как это зависит от опыта программирования.
Ниже вы увидите опросы, в которых вам предлагается поучаствовать. Сразу поясню разницу между понятиями «код» и «красивый код» в них. Красивый код — это тот, который вы стремитесь писать, содержащий в себе все то, что для вас важно. Код — это то, с чем вы сможете работать. Он не обязательно должен быть красивым, вы можете от него плеваться, но, тем не менее, будете с ним работать. Однако, если же из него исключить хотя бы еще одну «составляющую» (см. опросы), то вы откажетесь поддерживать подобное.
Читать полностью »
Что такое красивый код, и нужен ли он? Что думают в Яндексе
2014-02-03 в 11:08, admin, рубрики: Блог компании Яндекс, красивый код, Программирование, программисты, Совершенный код, яндекс, метки: красивый код, Программирование, программисты, яндексВ Яндексе работает больше 6000 человек, и, по некоторым оценкам, больше половины наших сотрудников имеют опыт в программировании. И конечно же, у каждого из этих людей есть своё самое правильное мнение о том, каким должен быть идеальный код.
В результате у нас нередки споры споры о том, должен ли код быть красивым. Причём оказывается, что понятие красоты здесь, как и везде, субъективно: «Предпочтение в коде у программистов — это как предпочтение в женщинах. Кому-то нравятся брюнетки, кому-то — блондинки».
Чтобы понять, какие свойства кода отстаивают разные стороны, я по горячим следам очередных бурных обсуждений решила спросить коллег, что такое красивый код и должен ли он вообще быть красивым? Достаточно того, чтобы он хорошо работал и был понятным? Или понятный код по умолчанию красивый?
В опросе участвуют bobuk, anatolix, anton, Андрей yafinder Плахов, Антон Самохвалов, Андрей Гулин, Владимир Иванов и другие. Суммарный опыт программирования всех участников этого микро-интервью на восьмерых составляет 198 лет.
Читать полностью »
Невыносимая сложность программирования
2014-01-21 в 14:22, admin, рубрики: Блог компании Aori, макконнелл, основы, Программирование, размышления вслух, Совершенный код, метки: макконнелл, основы, размышления вслухКогда-то книга “Совершенный код” Стива МакКоннела произвела на меня большое впечатление. Я лично думаю, что эту книгу обязательно должен прочесть каждый, кто зарабатывает на жизнь написанием кода. Особенно настоятельно я рекомендую эту книгу новичкам.
Настоящие размышления о программирования посвящаются главе 33 “Личность” и тем, кто решил связать свою жизнь с разработкой программного обеспечения.
Читать полностью »
Грабли и ямы — ФАНТОМасОСтроения
2014-01-13 в 18:58, admin, рубрики: операционные системы, Совершенный код, метки: операционные системыФантомасоПисателя (далее DZ. dz.ru/solutions/phantom/) активно ругают и, временами, откровенно тролят, хотя ничего неизвестного и неожиданного человек не сказал. Он просто сложил в аккуратную кучку факты, решения и концепции. А уж неприятие его идей, дело сугубо временное. (Ну хорошо, возможно не всех идей).
Ну вот, с разжиганием межконфессиональной вражды закончил, теперь можно перейти и к фактам, кои довольно прозаичны.
Читать полностью »