Рубрика «Совершенный код» - 2

Готофобия – это боязнь использовать инструкции goto. Обычно возникает из-за непонимания и незнания контекста этой проблемы, а также из-за историй о незапамятных временах в истории программировании. Разработчики, страдающие готофобией, готовы жертвовать удобочитаемостью своего кода, только бы не прибегать к goto.

Каждая собака знает (уже мемородный) заголовок статьи Дейкстры Letters to the editor: go to statement considered harmful («О вреде оператора Go To») (изначально эта статья называлась A case against the goto statementЧитать полностью »

Борьба за человекочитаемость кода: опыт Хабра - 1

Идеей о том, что нужно писать человекочитаемый код, уже никому Америку не откроешь. О том, как это стратегически важно для бизнеса и почему так полезно для разработчиков, написано много. Все, плюс-минус, это понимают, но контексты бывают разные, и каждый по-своему переносит это в свой опыт.

Читать полностью »

Делай нейминг как сеньор - 1

В чём разница между сочинением третьеклассника и статьёй в крупном таблоиде? Любой из нас сходу определит, что есть что. Даже если оба текста описывают одно и то же событие. А чем отличается код сеньора от кода мидла?

Читать полностью »

Unicode – это набор символов, целью которого является определение всех символов и глифов всех человеческих языков, живых и мертвых. Поскольку всё больше и больше программ должны поддерживать несколько языков или просто любой язык, юникод в последние годы приобретает всё большую популярность. Использование различных наборов символов для разных языков может быть слишком обременительным для программистов и пользователей.

К сожалению, юникод привносит свои требования и подводные камни, когда речь заходит о регулярных выражениях.

Поддержка юникод-совместимых регулярных выражений

В июле и августе 1991 года я, с подачи Гвидо Ван Россума, проводил технические интервью на позицию Middle Python Backend developer. И, видимо, буду вынужден продолжать проводить, о чём ниже.

Задача формулировалась как «найти человека, который сможет задать и поддерживать высокий уровень профессионализма в применении языка Python». Под эту задачу я сформировал новый опросник вместо того, которым пользовался несколько дней — старый имел слишком жесткий закос под промышленное программирование.

И вот что я хочу сказать вам, коллеги: вы меня огорчаете.

Читать полностью »
Нельзя просто так взять и распарсить этот JSON на JavaScript - 1

JSON является одним из очень простых, но в то же время эффективных языков для хранения и передачи данных. Он настолько популярен, что, пожалуй, может считаться самым совместимым форматом представления данных в мире. Вероятно, что все современные языки программирования умеют работать с JSON практически из коробки.

Читать полностью »

Задача коммивояжера (TSP) точное решение — метод целочисленного линейного программирования (Integer programming) - 1

Все пути одинаковы: они ведут в никуда. Но у одних есть сердце, а у других — нет. Один путь дает тебе силы, другой — уничтожает тебя.

- Карлос Кастанеда

Читать полностью »

image

{"__typename":"PageLikeAction","action_type":"LIKE","label":{"text":"Like"}

В 2009 году Facebook добавила в интерфейс своей социальной сети код, изменивший мир — кнопку «Like». «Лайк» был детищем нескольких программистов и дизайнеров — Лии Перлман и Джастина Розенштейна. Они предположили, что пользователи Facebook часто бывают слишком заняты, чтобы оставлять комментарии к постам своих друзей, и что поэтому им нужна простая кнопка, нажав которую можно было бы дать понять друзьям, что их пост вам понравился. Так оценивать и поощрять друг друга пользователям стало бы легче, а значит и делали бы они это чаще.

Это сработало — и даже слишком хорошо. К 2012 году пользователи прожали «лайк» триллион раз. У этого оказались и побочные эффекты. Многие стали публиковать фото/видео, чтобы потом сидеть и с тревогой обновлять страницу, ожидая, когда же число лайков возрастёт. Все стали гадать, почему кто-то другой получает больше лайков. Люди подсели на иглу одобрения (вместо того, чтобы сесть на чьё-то лицо), что отразилось на их повседневной онлайн-активности: старались публиковать как можно больше постов, чтобы казаться смешнее, умнее, красивее, спортивнее.

Небольшой фрагмент кода, который внёс почти незаметное изменение в пользовательский интерфейс социальной сети, изменил поведение людей. Ниже представлен список из примеров подобных важных фрагментов кода, которые изменили мир. И на самом деле это неполный список, учитывая огромное количество кода, который был написан.Читать полностью »

Вам нужен чистый код? Используйте правило шести - 1

Все хотят писать чистый код. Этому посвящены целые книги.

Но вам не нужно читать книги, чтобы начать писать более чистый код прямо сейчас. Есть одна «хитрость», которой может научиться любой кодер, она делает код гораздо менее запутанным.

Решение таково:

Каждая строка делает только одно действие

Одна строка, одна задача.

Но не стоит слишком перебарщивать.
Читать полностью »

Система типов — лучший друг программиста - 1

Я устал от одержимости примитивами и от чрезмерного использования примитивных типов для моделирования функциональной области.

Значение в string не лучший тип для записи адреса электронной почты или страны проживания пользователя. Эти значения заслуживают гораздо более богатых и специализированных типов. Мне нужно, чтобы существовал тип данных EmailAddress, который не может быть null. Мне нужна единая точка входа для создания нового объекта этого типа. Он должен валидироваться и нормализироваться перед возвратом нового значения. Мне нужно, чтобы этот тип данных имел полезные методы наподобие .Domain() или .NonAliasValue(), которые бы возвращали для введённого foo+bar@gmail.com значения gmail.com и foo@gmail.com. Эта полезная функциональность должна быть встроена в эти типы. Это обеспечивает безопасность, помогает предотвращать баги и существенно повышает удобство поддержки.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js