Favor functional programming over imperative programming
Отдавайте предпочтение функциональному программированию над императивным.
Функциональные языки программирования могут быть чище и проще для тестирования. Используйте этот стиль, когда сможете. Однако нужно быть предельно осторожным и хорошо понимать, что делает функция и как именно она выполняется, иначе это может привести к накладным расходам.
#functions
Отдавайте предпочтение функциональному программированию над императивным.
Функциональные языки программирования могут быть чище и проще для тестирования. Используйте этот стиль, когда сможете. Однако нужно быть предельно осторожным и хорошо понимать, что делает функция и как именно она выполняется, иначе это может привести к накладным расходам.
#functions
Don't ignore caught errors
Не игнорируйте обнаруженные ошибки.
Ничего не делать с обнаруженной ошибкой не дает вам возможности исправить или отреагировать на указанную ошибку. Вывод ошибки на консоль (console.log) не намного лучше, так как часто он может потеряться в море других вещей, напечатанных на консоли. Если вы добавляете какой-либо фрагмент кода в try / catch, это означает, что вы думаете, что там может произойти ошибка, и поэтому вам нужно правильно на нее отреагировать.
#errors
Не игнорируйте обнаруженные ошибки.
Ничего не делать с обнаруженной ошибкой не дает вам возможности исправить или отреагировать на указанную ошибку. Вывод ошибки на консоль (console.log) не намного лучше, так как часто он может потеряться в море других вещей, напечатанных на консоли. Если вы добавляете какой-либо фрагмент кода в try / catch, это означает, что вы думаете, что там может произойти ошибка, и поэтому вам нужно правильно на нее отреагировать.
#errors
Readme Driven Development
RDD — это крайне простая практика.
Пишите Readme в первую очередь, вот в принципе и все. A какие приемущества это вам даст читайте в статье.
#architecture
RDD — это крайне простая практика.
Пишите Readme в первую очередь, вот в принципе и все. A какие приемущества это вам даст читайте в статье.
#architecture
Medium
Readme Driven Development
RDD — это крайне простая практика. И здесь «DD» может означать «минута на освоение и вся жизнь для мастерства». Но, к счастью, не в этом…
Quality your working
WakaTime - сервис, который считает Ваше рабочее время. Большой плюс данного сервиса в том что он сам включается когда Вы начинаете писать код, и сам видит когда Вы ушли.
Он умеет логировать самую разную информацию, от количества рабочих часов над проектом, до составления графика об использовании языков программирования.
#work #quality #apps
WakaTime - сервис, который считает Ваше рабочее время. Большой плюс данного сервиса в том что он сам включается когда Вы начинаете писать код, и сам видит когда Вы ушли.
Он умеет логировать самую разную информацию, от количества рабочих часов над проектом, до составления графика об использовании языков программирования.
#work #quality #apps
Liskov Substitution Principle
Принцип подстановки Барбары Лисков.
Цель этого принципа заключаются в том, чтобы классы-наследники могли бы использоваться вместо родительских классов, от которых они образованы, не нарушая работу программы. Если оказывается, что в коде проверяется тип класса, значит принцип подстановки нарушается и вам следует пересмотреть свое решение.
#solid
Принцип подстановки Барбары Лисков.
Цель этого принципа заключаются в том, чтобы классы-наследники могли бы использоваться вместо родительских классов, от которых они образованы, не нарушая работу программы. Если оказывается, что в коде проверяется тип класса, значит принцип подстановки нарушается и вам следует пересмотреть свое решение.
#solid
Group the blocks by meaning
Группируйте блоки по смыслу. Используйте психологический эффект восприятия — «Эффект близости»: близко расположенные фигуры при восприятии объединяются. Получить код, подготовленный для анализа и обобщения можно, расположив рядом строки, объединенные смыслом или близкие по функционалу, разделив их пустой строкой.
#formatting
Группируйте блоки по смыслу. Используйте психологический эффект восприятия — «Эффект близости»: близко расположенные фигуры при восприятии объединяются. Получить код, подготовленный для анализа и обобщения можно, расположив рядом строки, объединенные смыслом или близкие по функционалу, разделив их пустой строкой.
#formatting
Function arguments
Аргументы функции.
Ограничение количества параметров функции невероятно важно, поскольку оно упрощает тестирование функции. Наличие более чем трёх аргументов приводит к комбинаторному взрыву, когда вам приходится перебирать массу различных случаев с каждым отдельным аргументом.
Идеальная ситуация — отсутствие аргументов. Один или два аргумента — хорошо, а трех уже следует избегать.
#functions
Аргументы функции.
Ограничение количества параметров функции невероятно важно, поскольку оно упрощает тестирование функции. Наличие более чем трёх аргументов приводит к комбинаторному взрыву, когда вам приходится перебирать массу различных случаев с каждым отдельным аргументом.
Идеальная ситуация — отсутствие аргументов. Один или два аргумента — хорошо, а трех уже следует избегать.
#functions
Dublication
Дублирование.
Каждый раз, когда в программе встречается повторяющийся код, он указывает на упущенную возможность для абстракции. Возможно, дубликат мог бы стать функцикй или даже отдельным классом. "Сворачивая" дублирование в подобные абстракции, вы расширяете лексикон языка программирования. Другие программисты могут воспользоваться созданными вами абстрактными концепциями. Повышение уровня абстракции ускоряет программирование и снижает вероятность ошибок.
#tips
Дублирование.
Каждый раз, когда в программе встречается повторяющийся код, он указывает на упущенную возможность для абстракции. Возможно, дубликат мог бы стать функцикй или даже отдельным классом. "Сворачивая" дублирование в подобные абстракции, вы расширяете лексикон языка программирования. Другие программисты могут воспользоваться созданными вами абстрактными концепциями. Повышение уровня абстракции ускоряет программирование и снижает вероятность ошибок.
#tips
Ad Hominem
Переход на личности.
Инспектируйте программу, а не программиста. Замечания о его личности лишь усложняют восприятие им критики.
Если вы пишите негативные комментарии, пишите «патч» или «код» вместо «ты». Например, вместо "У тебя глюк в get_message" пишите "После применения этого патча в get_message появился глюк"
#cleancode
Переход на личности.
Инспектируйте программу, а не программиста. Замечания о его личности лишь усложняют восприятие им критики.
Если вы пишите негативные комментарии, пишите «патч» или «код» вместо «ты». Например, вместо "У тебя глюк в get_message" пишите "После применения этого патча в get_message появился глюк"
#cleancode
Dependency Inversion Principle
Суть принципа инверсии зависимостей проста: заменить композицию агрегацией. Вместо создания зависимостей напрямую, класс должен требовать их у более высокого уровня через аргументы метода или конструктора. При этом зависимость должна передаваться не в виде экземпляров конкретных классов, а в виде интерфейсов или абстрактных классов.
Подробнее вы можете прочитать в статье.
S O L I D
#solid
Суть принципа инверсии зависимостей проста: заменить композицию агрегацией. Вместо создания зависимостей напрямую, класс должен требовать их у более высокого уровня через аргументы метода или конструктора. При этом зависимость должна передаваться не в виде экземпляров конкретных классов, а в виде интерфейсов или абстрактных классов.
Подробнее вы можете прочитать в статье.
S O L I D
#solid
Medium
Dependency Inversion Principle
Принцип инверсии зависимостей
Compact Functions
Компактные функции.
Есть всего два привила. Первое: функции должны быть компатными. Второе: функции должны быть еще компактнее.
Лучше 10 функций по 20 строк, чем один монстр на 200 строк. Чем компактнее вы будете писать свои функции, тем более примитивными и очевидными они будут казаться для читающего.
#functions
Компактные функции.
Есть всего два привила. Первое: функции должны быть компатными. Второе: функции должны быть еще компактнее.
Лучше 10 функций по 20 строк, чем один монстр на 200 строк. Чем компактнее вы будете писать свои функции, тем более примитивными и очевидными они будут казаться для читающего.
#functions
Mvvm Design Pattern
Mvvm был представлен Джоном Госсманом в 2005 году как модификация шаблона Presentation Model и был первоначально нацелен на разработку приложений в WPF. И хотя сейчас паттерн вышел за пределы WPF и применяется в самых различных технологиях, в том числе при разработке под Android, iOS, тем не менее WPF, UWP и Xamarin являются довольно показательными технологиями, которые в полной мере раскрывают возможности данного паттерна.
#designpatterns
Mvvm был представлен Джоном Госсманом в 2005 году как модификация шаблона Presentation Model и был первоначально нацелен на разработку приложений в WPF. И хотя сейчас паттерн вышел за пределы WPF и применяется в самых различных технологиях, в том числе при разработке под Android, iOS, тем не менее WPF, UWP и Xamarin являются довольно показательными технологиями, которые в полной мере раскрывают возможности данного паттерна.
#designpatterns
Medium
MVVM
Model-View-ViewModel Architecture for your projects
if - else - while
Блоки в командах if, else, while и т.д. должны состоять из одной строки, в которой обычно содержиться вызов функции. Это не только делает вмещающую функцию более компактной, но и способствует документированию кода, поскольку вызываемой в блоке функции можно присвоить удобное содержательное имя.
#functions
Блоки в командах if, else, while и т.д. должны состоять из одной строки, в которой обычно содержиться вызов функции. Это не только делает вмещающую функцию более компактной, но и способствует документированию кода, поскольку вызываемой в блоке функции можно присвоить удобное содержательное имя.
#functions
Functions Should Do One Thing
Функция должна решать одну задачу.
Это, безусловно, самое важное правило в разработке программного обеспечения. Когда функции решают более одной задачи, их труднее сочетать, тестировать и понимать. Как только вы сможете свести каждую функцию к выполнению только одного действия, их станет значительно проще рефакторить, а ваш код станет гораздо более читаемым. Даже если приведенное правило будет единственным вынесенным вами из этого руководства, вы все равно будете круче многих разработчиков.
#functions
Функция должна решать одну задачу.
Это, безусловно, самое важное правило в разработке программного обеспечения. Когда функции решают более одной задачи, их труднее сочетать, тестировать и понимать. Как только вы сможете свести каждую функцию к выполнению только одного действия, их станет значительно проще рефакторить, а ваш код станет гораздо более читаемым. Даже если приведенное правило будет единственным вынесенным вами из этого руководства, вы все равно будете круче многих разработчиков.
#functions
TODO Comments
Комментарии TODO.
Иногда бывает полезно ставить заметки "на будущее" в форме комментариев
В следующем примере комментарий TODO объясняет, почему функция имеет вырожденную реализацию и что она должна делать в будущем.
#comments
Комментарии TODO.
Иногда бывает полезно ставить заметки "на будущее" в форме комментариев
//TODO
. Комментарии TODO напоминают о том, что, по мнению программиста, сделать необходимо, но по какой-то причине нельзя сделать прямо сейчас.В следующем примере комментарий TODO объясняет, почему функция имеет вырожденную реализацию и что она должна делать в будущем.
#comments