Forwarded from Clean Code
Avoid positional markers
Избегайте позиционных маркеров. Они обычно просто добавляют шум. Позвольте функциям и именам переменных вместе с правильными отступами и форматированием придать визуальную структуру вашему коду.
#comments
Избегайте позиционных маркеров. Они обычно просто добавляют шум. Позвольте функциям и именам переменных вместе с правильными отступами и форматированием придать визуальную структуру вашему коду.
#comments
Bridge Pattern
Паттерн Мост считается одним из важнейших среди паттернов проектирования. Как правило, он используется в больших бизнес-проектах, поскольку легко позволяет упрощать классы, отделяя реализацию логики низкого уровня от определения класса высокого уровня (который обычно абстрагируется или наследуется). Цель этого руководства — раскрыть особенности паттерна Мост на простых примерах.
#designpatterns
Паттерн Мост считается одним из важнейших среди паттернов проектирования. Как правило, он используется в больших бизнес-проектах, поскольку легко позволяет упрощать классы, отделяя реализацию логики низкого уровня от определения класса высокого уровня (который обычно абстрагируется или наследуется). Цель этого руководства — раскрыть особенности паттерна Мост на простых примерах.
#designpatterns
Medium
Design Patterns — A quick guide to Bridge pattern.
Паттерны проектирования — краткое руководство по паттерну Мост.
Commented Code
Приходилось ли вам работать с кодом, который содержит закомментированный код? Привычка оставлять такого рода комментарии является признаком плохого тона, и вот почему:
У других программистов, видящих закомментированный код, не хватает храбрости удалить его. Они полагают, что код оставлен не зря и слишком важен. В итоге скапливается ненужный балласт.
Это всеобщая проблема программистов, и не только начинающих. Нам всегда нужно хорошо продумывать алгоритмы и архитектуру, чтобы быть уверенными в их работоспособности и эффективности. Тогда у вас не возникнет даже мысли оставить закомментированный код.
#comments
Приходилось ли вам работать с кодом, который содержит закомментированный код? Привычка оставлять такого рода комментарии является признаком плохого тона, и вот почему:
У других программистов, видящих закомментированный код, не хватает храбрости удалить его. Они полагают, что код оставлен не зря и слишком важен. В итоге скапливается ненужный балласт.
Это всеобщая проблема программистов, и не только начинающих. Нам всегда нужно хорошо продумывать алгоритмы и архитектуру, чтобы быть уверенными в их работоспособности и эффективности. Тогда у вас не возникнет даже мысли оставить закомментированный код.
#comments
Beautify Extension
Советуем полезное расширение Beautify для Visual Studio Code и Brackets, позволяющее форматировать JavaScript, JSON, CSS и HTML-код. Must-have для тех, кто неравнодушен к рефакторингу.
Visual Studio Code | Brackets | Online
#tools
Советуем полезное расширение Beautify для Visual Studio Code и Brackets, позволяющее форматировать JavaScript, JSON, CSS и HTML-код. Must-have для тех, кто неравнодушен к рефакторингу.
Visual Studio Code | Brackets | Online
#tools
Have no side effects
Бывает, что результат работы функции оказывается совсем не таким, как планировалось. И здесь стоит вспомнить о таком неприятном явлении, как побочные эффекты в функциях. Проблема эта очень коварная.
Побочным эффектом в коде ниже является вызов Session.initialize(). Функция checkPassword может вызываться только в определенные моменты времени, когда инициализация сеанса может быть произведена безопасно. Если же нарушить такую временную привязку, сеансовые данные могут быть безвозвратно потеряны.
Возьмите себе за правило писать функции без побочных эффектов. Удачного дня!
#cleancode #functions
Бывает, что результат работы функции оказывается совсем не таким, как планировалось. И здесь стоит вспомнить о таком неприятном явлении, как побочные эффекты в функциях. Проблема эта очень коварная.
Побочным эффектом в коде ниже является вызов Session.initialize(). Функция checkPassword может вызываться только в определенные моменты времени, когда инициализация сеанса может быть произведена безопасно. Если же нарушить такую временную привязку, сеансовые данные могут быть безвозвратно потеряны.
Возьмите себе за правило писать функции без побочных эффектов. Удачного дня!
#cleancode #functions
It's okay to write dirty code
Трудно отрицать, что попытка писать чистый код на самом деле тормозит большинство из нас, однако делать это все же неоходимо. В данной статье приводится несколько путей написания чистого кода.
#cleancode
Трудно отрицать, что попытка писать чистый код на самом деле тормозит большинство из нас, однако делать это все же неоходимо. В данной статье приводится несколько путей написания чистого кода.
#cleancode
Medium
It’s okay to write dirty code
Многие разработчики считают, что им нужно писать чистый код.
Forwarded from Clean Code
if - else - while
Блоки в командах if, else, while и т.д. должны состоять из одной строки, в которой обычно содержиться вызов функции. Это не только делает вмещающую функцию более компактной, но и способствует документированию кода, поскольку вызываемой в блоке функции можно присвоить удобное содержательное имя.
#functions
Блоки в командах if, else, while и т.д. должны состоять из одной строки, в которой обычно содержиться вызов функции. Это не только делает вмещающую функцию более компактной, но и способствует документированию кода, поскольку вызываемой в блоке функции можно присвоить удобное содержательное имя.
#functions
Help Tools: Spell Checkers
Настоящие профессионалы пишут не только чистый, эффективный код, но и грамматически правильные комментарии.
В этом нам помогут популярные расширения для текстовых редакторов кода и IDE: Spell Checkers.
Visual Studio | VS Code
#tools
Настоящие профессионалы пишут не только чистый, эффективный код, но и грамматически правильные комментарии.
В этом нам помогут популярные расширения для текстовых редакторов кода и IDE: Spell Checkers.
Visual Studio | VS Code
#tools
Observer vs Pub-Sub design patterns
Статья на простых примерах объясняет сущность паттернов Наблюдатель и Издатель-Подписчик.
При прочтении обратите пристальное внимание на их отличия, ведь эти паттерны легко спутать.
#designpatterns
Статья на простых примерах объясняет сущность паттернов Наблюдатель и Издатель-Подписчик.
При прочтении обратите пристальное внимание на их отличия, ведь эти паттерны легко спутать.
#designpatterns
Medium
Observer vs Pub-Sub pattern
Какой из паттернов лучше, Наблюдатель или Издатель-Подписчик?
Functions instead of comments
Не используйте комментарии там, где можно использовать функцию или переменную. Постарайтесь переработать свой код так, чтобы их можно было удалить.
И запомните: хороший код не требует комментариев.
#comments #functions
Не используйте комментарии там, где можно использовать функцию или переменную. Постарайтесь переработать свой код так, чтобы их можно было удалить.
И запомните: хороший код не требует комментариев.
#comments #functions
Divergent Change
Стремление к структурированию программ оправдано, ведь мы хотим облегчить их модификацию.
Однако если внесение изменений в одно определенное место не удается, возникает следующая проблема.
Расходящиеся модификации имеют место тогда, когда один класс часто модифицируется различными способами по разным причинам. Если, глядя на класс, вы отмечаете для себя, что эти три метода
придется модифицировать для каждой новой базы данных, а эти четыре метода придется модифицировать при каждом появлении нового финансового инструмента, это может означать, что вместо одного класса лучше иметь два.
При каждой модификации должен изменяться один класс, и вся типизация в новом классе должна выражать эти условия. Тогда каждый класс будет иметь свою зону ответственности.
#cleancode
Стремление к структурированию программ оправдано, ведь мы хотим облегчить их модификацию.
Однако если внесение изменений в одно определенное место не удается, возникает следующая проблема.
Расходящиеся модификации имеют место тогда, когда один класс часто модифицируется различными способами по разным причинам. Если, глядя на класс, вы отмечаете для себя, что эти три метода
придется модифицировать для каждой новой базы данных, а эти четыре метода придется модифицировать при каждом появлении нового финансового инструмента, это может означать, что вместо одного класса лучше иметь два.
При каждой модификации должен изменяться один класс, и вся типизация в новом классе должна выражать эти условия. Тогда каждый класс будет иметь свою зону ответственности.
#cleancode
3 Timeless Principles of Quality Code
При написании кода мы часто пользуемся популярными на сегодняшний день практиками и советами, но эти стандарты изменчивы. Однако существуют прочно утвердившиеся принципы написания кода, которые со временем не претерпевают изменений.
С ними вас познакомит статья.
#cleancode #programming
При написании кода мы часто пользуемся популярными на сегодняшний день практиками и советами, но эти стандарты изменчивы. Однако существуют прочно утвердившиеся принципы написания кода, которые со временем не претерпевают изменений.
С ними вас познакомит статья.
#cleancode #programming
Medium
Quality Code : Timeless Principles
Что значит писать качественный код.
Bracket Pair Colorizer
Популярное расширение для Visual Studio Code, позволяющее отмечать различным цветом открывающую и соответствующую ей закрывающую скобки. Определить, какой код к какому блоку относится, будет легко и, самое главное, наглядно.
Source
#tools
Популярное расширение для Visual Studio Code, позволяющее отмечать различным цветом открывающую и соответствующую ей закрывающую скобки. Определить, какой код к какому блоку относится, будет легко и, самое главное, наглядно.
Source
#tools
Parameterize Method
Иногда встречаются два метода, выполняющие сходные действия, но отличающиеся несколькими
значениями. В этом случае можно упростить положение, заменив разные методы одним, который обрабатывает
разные ситуации с помощью параметров. При таком изменении устраняется дублирование кода и возрастает
гибкость, потому что в результате добавления параметров можно обрабатывать и другие ситуации.
#tips
Иногда встречаются два метода, выполняющие сходные действия, но отличающиеся несколькими
значениями. В этом случае можно упростить положение, заменив разные методы одним, который обрабатывает
разные ситуации с помощью параметров. При таком изменении устраняется дублирование кода и возрастает
гибкость, потому что в результате добавления параметров можно обрабатывать и другие ситуации.
#tips
Clean Tests
Очень часто небрежно написанные тесты приводят к катастрофе. С плохо написанными тестами разработчики боятся изменений, их код начинает дурно пахнуть. В итоге мы получаем откровенно некачественный продукт.
Тестовый код не менее важен, чем код продукта. Не считайте его «кодом второго сорта». К написанию тестового кода следует относиться вдумчиво, внимательно и ответственно.
Тестовый код должен быть таким же чистым,как и код продукта.
#tips
Очень часто небрежно написанные тесты приводят к катастрофе. С плохо написанными тестами разработчики боятся изменений, их код начинает дурно пахнуть. В итоге мы получаем откровенно некачественный продукт.
Тестовый код не менее важен, чем код продукта. Не считайте его «кодом второго сорта». К написанию тестового кода следует относиться вдумчиво, внимательно и ответственно.
Тестовый код должен быть таким же чистым,как и код продукта.
#tips
Debugger for Google Chrome
Крайне необходимое расширение VS Code для JavaScript-разработчиков. Помимо привычных функций отладчика, поддерживает большое количество конфигураций, которые позволят разработчикам удобно работать с кодом.
Отладчик работает по Chrome Debugger Protocol. Файлы, открытые в браузере, сопоставляются с файлами из VS Code. Будьте осторожны: отладчик не поддерживает параллелизм, т.е. если вы откроете DevTools в Chrome, отладчик прекратит работу.
#tools
Крайне необходимое расширение VS Code для JavaScript-разработчиков. Помимо привычных функций отладчика, поддерживает большое количество конфигураций, которые позволят разработчикам удобно работать с кодом.
Отладчик работает по Chrome Debugger Protocol. Файлы, открытые в браузере, сопоставляются с файлами из VS Code. Будьте осторожны: отладчик не поддерживает параллелизм, т.е. если вы откроете DevTools в Chrome, отладчик прекратит работу.
#tools
Mutual Exclusion
Взаимное исключение возникает, когда несколько потоков должны использовать ресурсы, которые:
● не могут использоваться несколькими потоками одновременно;
● существуют в ограниченном количестве.
Типичный пример – подключения к базам данных, открытые для записи файлы, семафоры.
Одна из стратегий предотвращения взаимной блокировки основана на предотвращении состояния взаимного исключения.
● Использование ресурсов, поддерживающих многопоточный доступ (например, AtomicInteger).
● Увеличение количества ресурсов, чтобы оно достигло или превосходило количество конкурирующих потоков.
● Проверка наличия всех свободных ресурсов перед попытками захвата.
#tips
Взаимное исключение возникает, когда несколько потоков должны использовать ресурсы, которые:
● не могут использоваться несколькими потоками одновременно;
● существуют в ограниченном количестве.
Типичный пример – подключения к базам данных, открытые для записи файлы, семафоры.
Одна из стратегий предотвращения взаимной блокировки основана на предотвращении состояния взаимного исключения.
● Использование ресурсов, поддерживающих многопоточный доступ (например, AtomicInteger).
● Увеличение количества ресурсов, чтобы оно достигло или превосходило количество конкурирующих потоков.
● Проверка наличия всех свободных ресурсов перед попытками захвата.
#tips