Я компилирую правила программирования мышления для моей команды: Что является Вашим? [закрытый]

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

Для этого я хотел создать список вещей, которые являются:

  • лучшая практика,
  • лучше всего мысль,
  • лучший подход...

та справка способность программиста проанализировать, думайте, приблизьтесь, решите и реализуйте самым эффективным способом.

Я видел десятки невероятно ценных комментариев в вопросах в течение Переполнения стека, но я не мог найти место, где мы держим их вместе. Существует самое спорное мнение о Переполнении стека. Однако я просто ищу мудро понимание, которое может быть совместно использовано и помочь моей команде, и я приближаюсь и решаю проблемы лучше посредством лучшего программирования.

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

Я запущу с первого.

DRY - не Повторяет Себя - В коде, комментариях или документации.

44
задан 11 revs, 5 users 93% 10 July 2019 в 14:28
поделиться

65 ответов

Всегда оставляйте код немного лучше чем тогда, когда Вы нашли его.

52
ответ дан Torsten Marek 26 November 2019 в 21:32
поделиться

Ваша команда не должна уже знать эти вещи?

Это - что-то вроде беспокойства, им нужно сказать то, что оценивает, они уже знают от прошлого опыта. Это немного похоже на выполнение курьерской компании и сообщение Ваших драйверов знать, что у них не должно быть несчастных случаев. Если им нужно сказать это, потому что они уже не знали это - я буду серьезно волноваться, что они - правильный выбор для моей команды.

-1
ответ дан 2 revs, 2 users 57% 5 July 2019 в 17:23
поделиться

Привычки к ленивому кодеру

В первый раз Вас просят сделать что-то, сделать это (справа).

Во второй раз Вас просят сделать это, сделать инструмент, который делает это автоматически.

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

(чтобы не быть отнесенным слишком серьезно)

13
ответ дан Jens Roland 26 November 2019 в 21:32
поделиться

KISS - Сохраняют это простым, глупым.
Выбор простое решение это работы .
не делают вещи (слишком) сложными, прежде чем они должны будут быть.
Просто, потому что все остальные используют некоторую сложную платформу для решения их проблемы, не означает, что Вы имеете к.

32
ответ дан dw.mackie 26 November 2019 в 21:32
поделиться

не изобретают велосипед

, Если там должен быть функцией для него в оперативной библиотеке - там, вероятно.

32
ответ дан Peter Mortensen 26 November 2019 в 21:32
поделиться

Пригодность для обслуживания важна.

Пишут код, как будто человек, который закончит тем, что поддержал его, является сумасшедшим и знает, где Вы живете.

29
ответ дан lillq 26 November 2019 в 21:32
поделиться

Кто-то еще не будет фиксировать его.

, Если проблема привлекает Ваше внимание, возьмите владение достаточно долго, чтобы гарантировать, что это будет заботиться о так или иначе.

27
ответ дан Rex M 26 November 2019 в 21:32
поделиться

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

"Мы должны забыть о маленькой эффективности, сказать приблизительно 97% времени: преждевременная оптимизация является корнем всего зла".
- Donald Knuth

26
ответ дан Whatsit 26 November 2019 в 21:32
поделиться

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

24
ответ дан dw.mackie 26 November 2019 в 21:32
поделиться

не Заключают, что Требования - Роют для Них

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

через Прагматически настроенный Программист

23
ответ дан Aaron Wagner 26 November 2019 в 21:32
поделиться

Следуйте ТВЕРДЫЕ принципы :

Единственный Принцип Ответственности (SRP)

никогда не должно быть больше чем одной причины класса для изменения.

Открыто закрытый Принцип (OCP)

объекты программного обеспечения (классы, модули, функции, и т.д.) должны быть открыты для расширения, но закрытые для модификации.

принцип замены Лисков (LSP)

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

Интерфейсный Принцип Сегрегации (ISP)

Клиенты не должны быть вынуждены зависеть от интерфейсов, которые они не используют.

Принцип Инверсии Зависимости (DIP)

А. Модули высокого уровня не должны зависеть от низкоуровневых модулей. Оба должны зависеть от абстракций.

B. Абстракции не должны зависеть от деталей. Детали должны зависеть от абстракций.

20
ответ дан Torsten Marek 26 November 2019 в 21:32
поделиться

Лучшая практика: Использование Ваш мозг
не следуют ни за какой тенденцией/принципом/шаблоном, не думая об этом

16
ответ дан Ludwig Wensauer 26 November 2019 в 21:32
поделиться

Я думаю почти все, что перечислено под "Дзэн Python", запрашивает каждый "Правила Программирования Мышления" список. Запустите с 'Python-c, "импортируют это"':

Дзэн Python, Tim Peters

  • Красивый лучше, чем ужасный.
  • Явный лучше, чем неявный.
  • Простой лучше, чем комплекс.
  • Комплекс лучше, чем сложный.
  • Плоский лучше, чем вложенный.
  • Редкий лучше, чем плотный.
  • количества Удобочитаемости.
  • Особые случаи не являются достаточно особенными для нарушения правил.
  • , Хотя практичность бьет чистоту.
  • Ошибки никогда не должны передавать тихо.
  • , Если явно не заставлено замолчать.
  • Перед лицом неоднозначности, откажитесь от искушения предположить.
  • должны быть один - и предпочтительно только один - очевидный способ сделать это.
  • , Хотя тот путь не может быть очевидным сначала, если Вы не голландцы.
  • Теперь лучше, чем никогда.
  • , Хотя никогда не часто лучше, чем право теперь.
  • , Если реализацию трудно объяснить, это - плохая идея.
  • , Если реализацию легко объяснить, это может быть хорошая идея.
  • Пространства имен являются одной гудящей прекрасной идеей - давайте сделаем больше из тех!
16
ответ дан 2 revs, 2 users 70% 26 November 2019 в 21:32
поделиться

Разработка через тестирование (TDD) заставляет кодеры спать лучше ночью

Просто для уточнения: Некоторые люди, кажется, думают, что TDD является просто способом некомпетентного кодера хромать от до B без посредничества все слишком много, и что, если Вы знаете то, что Вы делаете, что средство там не является никакой потребностью в (единице) методики тестирования. , Который полностью упускает суть Разработки через тестирование. TDD - приблизительно три (обновление: по-видимому, четыре) вещи:

  1. волшебство Рефакторинга . Наличие полного набора тестов означает, что можно сделать в других отношениях безумные трюки рефакторинга, манипулируя всей структурой приложения, не пропуская даже один из двухсот сумасшедших тонких побочных эффектов, которые следуют из него. Даже лучшие программисты отказываются осуществить рефакторинг свои базовые классы и интерфейсы без хорошего (единица) тестовое покрытие, потому что чертовски почти невозможно разыскать все небольшие 'волновые эффекты', которые это вызывает без них.

  2. ловушки Обнаружения рано . Если Вы пишете тестам правильный путь, это означает вынуждать себя рассмотреть все случаи края. Часто, это приводит к лучшим проектным решениям, после того как фактическая разработка начинается, потому что кодер уже рассмотрел некоторые более хитрые ситуации, которые могут призвать к другой структуре наследования или более гибкому шаблону разработки. Потребность в этих изменениях часто не очевидна - или интуитивна - во время начального планирования и анализа, но те точные изменения могут подать заявку, намного легче расширить и поддержать по линии.

  3. Обеспечение, чтобы тесты стали записанными . TDD требует, чтобы Вы записали тесты прежде, чем написать код. Несомненно, это может быть болью в заднице, начиная с записи, что тесты утомительны по сравнению с записью фактический код - и часто занимают больше времени, также. Однако выполнение так является единственным способом удостовериться, что тесты будут записаны вообще. Если Вы думаете, что не забудете писать тесты, после того как код сделан, Вы почти всегда неправы.

  4. Принуждение Вас написать лучший код . Так как TDD вынуждает весь код быть тестируемым (Вы не пишете код, прежде чем будет тест для него), он требует, чтобы Вы написали более отделенный код так, чтобы можно было протестировать компоненты в изоляции. Таким образом, TDD вынуждает Вас написать лучший код. ( Спасибо, Esko)

15
ответ дан Jens Roland 26 November 2019 в 21:32
поделиться

Google, прежде чем Вы спросите своего коллегу и прервете его кодирование.

15
ответ дан 2 revs, 2 users 67% 26 November 2019 в 21:32
поделиться

Меньше кода лучше, чем больше, пока он имеет больше смысла, чем много кода.

13
ответ дан Jas Panesar 26 November 2019 в 21:32
поделиться

Быть Катализатором для Изменения

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

через Прагматически настроенный Программист

10
ответ дан Aaron Wagner 26 November 2019 в 21:32
поделиться

не Паникуют, Когда Отладка

Глубоко вздыхает и ДУМАЕТ! о том, что могло вызывать ошибку.

через Прагматически настроенный Программист

10
ответ дан Aaron Wagner 26 November 2019 в 21:32
поделиться

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

Дублированный код является промежуточным шагом, не конечным продуктом.

10
ответ дан Ryan Lundy 26 November 2019 в 21:32
поделиться

Это И Что Вы Говорите и Способ, которым Вы Говорите, что Это

нет никакого смысла в наличии прекрасных идей, если Вы не передаете их эффективно.

через Прагматически настроенный Программист

9
ответ дан Aaron Wagner 26 November 2019 в 21:32
поделиться

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

От: Ужас Кодирования

9
ответ дан 2 revs, 2 users 83% 26 November 2019 в 21:32
поделиться

Нарушитель сборки покупает ланч

7
ответ дан Webjedi 26 November 2019 в 21:32
поделиться

публикуют рано, часто публикуют

7
ответ дан Jens Roland 26 November 2019 в 21:32
поделиться

Создайте его, исправляют сначала. Сделайте его быстро вторым.

7
ответ дан Peter Mortensen 26 November 2019 в 21:32
поделиться

Часто обзоры кода поведения

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

  1. Это улучшает качество кода.
  2. Это помогает осуществить рефакторинг повторно используемые коды в допускающие повторное использование библиотеки.
  3. Это помогает Вам учиться от Ваших поддерживающих разработчиков.
  4. Это помогает Вам научиться на своих ошибках и обновить свою память о коде гения, который Вы написали прежде.
7
ответ дан 3 revs, 3 users 75%MehdiK 26 November 2019 в 21:32
поделиться

Что-либо, что могло влиять, как выполнение приложения нужно рассматривать как код, и это означает помещать его в управление версиями. Особенно создайте сценарии и схему базы данных и данные (.sql) файлы.

6
ответ дан dj_segfault 26 November 2019 в 21:32
поделиться

Принимают участие в разработке с открытым исходным кодом

, Если Вы используете открытый исходный код в своих проектах, не забудьте отправлять свой bugfixes и улучшения назад сообщества. Это не лучшая практика разработки по сути , но это - определенно мышление программиста для борьбы за.

5
ответ дан Jens Roland 26 November 2019 в 21:32
поделиться

Понимают инструменты, которые Вы используете

, не используют шаблон, пока Вы не поняли, почему Вы используете его; не используйте инструмент, не зная почему; не полагайтесь на свою платформу или разработчика языка, всегда являющегося правым для Вашей ситуации, но также и не предполагайте, что они, как неправильно до доказывают!

5
ответ дан Richard Gadsden 26 November 2019 в 21:32
поделиться

Конвенция по Конфигурации

Особенно, где конвенции сильны и некоторая гибкость может быть принесена в жертву.

5
ответ дан Peter Mortensen 26 November 2019 в 21:32
поделиться

Не бойтесь признать, что "Я не знаю" и спрашиваю.

10 минут, спрашивая кого-то могли сохранить день, вытаскивая Ваши волосы!

35
ответ дан nzpcmad 26 November 2019 в 21:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: