
Хай Хабр!
Сегодня я хочу представить, дорогому хабрасообществу свой первый хабраперевод. Программировать на языке Python — подобно песне. Но еще лучше, когда Ваш код читаем и понятен, а значит чуть более поэтичен, чем обычно бывает производстве. У каждого свои правила и свои стереотипы относительно написания и оформления исходного кода на каком бы языке он ни был написан. Множество копий сломано о щиты на форумах, но как ни крути нельзя не считаться с мнением авторитетных товарищей. Так что сейчас будет представлен перевод первой части стайл-гайда для языка Python от Google. А коснется он именно постулатов написания кода (вторая часть тоже скоро появится, а посвящена она будет форматированию исходного кода). Сразу предупреждаю: тут много (если не большинство) прописных истин, которые все знают уже давно. Но я искренне надеюсь, что Вы сможете найти тут что-то новое, или хотя бы вспомнить старое. Приступим под катом.
Читать полностью »
Рубрика «Совершенный код» - 52
Советы Google по кодированию на языке Python. Часть первая: советы по программированию
2013-05-21 в 6:38, admin, рубрики: Google, python, Программирование, Совершенный код, метки: Google, python, ПрограммированиеДесятикратная разборчивость
2013-05-01 в 11:20, admin, рубрики: менеджмент, опыт, переводы, Программирование, производительность, Совершенный код, метки: менеджмент, опыт, Программирование, производительностьКаждый знает, что бывают «десятикратные» программисты, которые в 10 раз более производительны, чем программист обыкновенный. Мы не можем измерить производительность, поэтому и не знаем, правда ли это. Но на самом деле людей необыкновенно производительных существует немало, достаточно, чтобы доказать существование «десятикратного программиста».
Как же они этого добиваются?
Часто считают, что десятикратная производительность вытекает из десятикратных способностей или десятикратных знаний. Я так не думаю. Не хочу сказать, что способности или знания бесполезны. Но за много лет я заметил, что самое главное тут — десятикратная разборчивость. Фокус в том, чтобы постоянно уклоняться от паршивой работенки.
Вне области применения
2013-04-25 в 22:52, admin, рубрики: Анализ и проектирование систем, нытьё, Программирование, проектирование, Совершенный код, трэш-аналитика, Учебный процесс в IT, метки: нытьё, проектирование, совершенный код, трэш-аналитика
Мое становление как программиста началось в 2005 году и продолжается по
сей день. Несомненно, многие читатели смогут похвастаться более обширным
опытом, но речь пойдет о другом. Мой профессиональный рост наложился на
интересный период - повышение культуры программирования в рунете, если это
можно так назвать. Профессионалы были всегда, но сегодня подкованность
среднего программиста(во всяком случае в сфере best pracices) несравнимо
выше, чем тогда.
И само по себе это не плохо, опасения вызывает сам тренд который привел к
подобному результату. При его продолжении мы можем всерьез столкнуться с той
же проблемой, с которой все и началось - а именно с говнокодом, но на сей раз
говнокодом облагороженным, прикрытым множеством абстракций, а порой самими
этими абстракциями и являющимся. Да-да, сегодня опять критикуем
оверинжениринг.
Техника: Перемещение функций между объектами (рефакторинг М. Фаулера)
2013-04-12 в 14:26, admin, рубрики: Проектирование и рефакторинг, рефакторинг, Совершенный код, фаулер, шпаргалка, метки: рефакторинг, фаулер, шпаргалка Начало Код с душком
Техника: Составление методов
В продолжении, техника рефакторинга по книге Рефакторинг. Улучшение существующего кода Мартин Фаулер.
Читать полностью »
Пять правил успешного кросс-платформенного проекта
2013-04-07 в 15:28, admin, рубрики: cross-platform, кроссплатформенная разработка, Проектирование и рефакторинг, Совершенный код, управление проектамиОт переводчика: я сейчас по крупицам собираю литературу по проектированию кросс-платформенного ПО. Этот небольшой текст — самое интересное, что я пока нашёл.
Кодеру для реализации конкретной фичи достаточно гугла, но ведь есть особые требования к проектированию? Скажем, ветвление #ifdef в методах — единственное средство выделения platform-specific частей проекта? (Не много ли макарон?) Есть ли более высокоуровневые подходы, шаблоны, «надстройки» над #ifdef? Надеюсь, этот пост послужит пищей для дальнейшего обсуждения.Читать полностью »
Вася в роли компилятора
2013-03-30 в 18:27, admin, рубрики: компилятор, Песочница, рассказы, Совершенный код, метки: компилятор, рассказы, совершенный код Василий Викторович (далее просто Вася) работал в конторе уже третий год. Программист по образованию, он был на хорошем счету у директора Александра Ивановича, тот нисколько не сомневался в его профессиональных навыках и готов был доверить ему любую важную задачу. Директор часто набирал новых сотрудников в помощь Васе, но все они подолгу не задерживались — Вася жаловался, что, мол, плохие с них программисты, работать не хотят, пишут код, в котором сам чёрт ногу сломит, к тому же пичкают повсюду своё ООП и паттерны.
— Вася, так может ты сам поработаешь? Уже десять человек уволили… Понимаю, специалистов в наше время не сыскать, понимаю, одному работать трудно, но может всё-таки попробуешь, а?
— Иваныч, я бы с радостью, но кто тогда мелкими делами будет заниматься? Я пишу важнейшие вещи, а отвлекаться на пустяки всегда очень трудно. Найди мне хорошего человека, Иваныч! Я верю, однажды попадётся тот самый, который сможет работать как я, а то и лучше!
— Да что ты, Вася, я уже убедился — лучше тебя никого мне не найти. Я постараюсь, Вась, постараюсь!
Директор похлопал его по плечу и вышел из кабинета. А Вася нажал Alt+Tab и продолжил читать ленту.
Читать полностью »
Что делать с плохим кодом
2013-03-30 в 13:21, admin, рубрики: наставления, перевод, переводы, плохой код, Совершенный кодВот мой скромный совет о том, как, по моему мнению, людям следует поступать с плохим кодом. Этот совет не имеет ничего общего с техникой; строго говоря, это даже и не совет, а просто мои недавние размышления.
Обычно, первое, что человек делает, встретив плохой код — ищет виноватого. Это сразу становится личной или племенной вендеттой:
«Как можно быть таким идиотом?»
«Кто виноват в том, что мой мозг взорвался от всей этой бессвязности и богохульства?»
«Кто оскорбляет <Название Компании>!?»
Это неправильно. Не надо начинать с этого. Прежде, чем найти беднягу-автора кода и обрушить на него свой гнев, лучше поймите сам код.
Читать полностью »
Техника: Составление методов (рефакторинг М. Фаулера)
2013-03-29 в 13:25, admin, рубрики: Проектирование и рефакторинг, рефакторинг, Совершенный код, фаулер, шпаргалка, метки: рефакторинг, фаулер, шпаргалка Начало Код с душком (рефакторинг М. Фаулера) .
В продолжении, техника рефакторинга по книге Рефакторинг. Улучшение существующего кода Мартин Фаулер.
Синтаксис будет на C#, но главное понимать идею, а её можно использовать в любом другом языке программирования.
Читать полностью »
90 рекомендаций по стилю написания программ на C++
2013-03-24 в 10:23, admin, рубрики: c++, guidelines, Программирование, Совершенный кодОт переводчика. Искал в интернете простой и легко применимый гайдлайн по написанию программ на C++. Мне понравился один из вариантов, и я решил его перевести и опубликовать. Если хабрапользователи хорошо встретят этот топик, могу перевести и другие связанные документы, а также гайдлайны по написанию кода от других компаний.
1 Введение
Настоящий документ содержит рекомендации по написанию программ на языке C++.
Рекомендации основаны на установившихся стандартах, собранных из различных источников, личного опыта, частных требований и потребностей определённых проектов, а также почерпнутых из источников.
Но для появления ещё одного списка рекомендаций, помимо указанных источников, есть несколько причин. Основная причина — их излишняя обобщённость, поскольку зачастую требуется задать частные правила (в особенности правила именования). Данный документ содержит комментарии, что делает его более удобным в использовании при проведении ревизий кода, чем другие уже существующие документы. К тому же, рекомендации по программированию обычно вперемешку содержат описания проблем стиля и технических проблем, что не совсем удобно. Этот документ не содержит каких-либо технических рекомендаций по C++, делая упор на вопросах стиля.Читать полностью »
Весёлые (сосисочные) рефакторинги
2013-03-14 в 14:29, admin, рубрики: java, Программирование, рефакторинг, Совершенный код, метки: рефакторинг -refaktoringi.png)
Привет, %habrausername%. Я хочу сыграть с тобой в игру.
Ты устроился на новую работу. И в первый же день, сразу после подписания NDA, тебе показывают то, что осталось от предыдущего разработчика. Тебе хочется кричать, хочется бежать из этого проклятого места, но трудовой договор сковывает тебя по рукам и ногам. Поэтому ты лишь еле слышно материшься.
От предыдущего разработчика осталась кучка кода и домашние тапочки. Ты осторожно кладёшь тапочки в мусорную корзину и начинаешь рефакторинг.
Этот код ужасен. Во-первых, нет никого, кто мог бы сказать, зачем этот код писался. Во-вторых, нет никакой документации. Нет даже комментариев, не говоря уже о юнит-тестах. В-третьих, код не структурирован, а имена классов и методов ни о чём не говорят. И, наконец, работать это должно начать не сегодня, и даже не вчера, а внезапно.
Ну как, %habrausername%, пробежал холодок по спине?Читать полностью »
