Отличие профессионала от непрофессионала.
Быть непрофессионалом намного проще. Непрофессионалы не несут ответственности за выполняемую работу — они оставляют ответственность своим работодателям. Если непрофессионал совершает ошибку, то мусор за ним прибирает работодатель. Но если ошибка совершается профессионалом, то устранять последствия приходится ему самому.
А если в ваш модуль закрадется ошибка, которая обойдется вашей компании в $10 000? Непрофессионал пожмет плечами, скажет: «Вся-кое бывает», и продолжит писать следующий модуль. Профессионал должен выписать своей компании чек на $10 000!
#programming
Быть непрофессионалом намного проще. Непрофессионалы не несут ответственности за выполняемую работу — они оставляют ответственность своим работодателям. Если непрофессионал совершает ошибку, то мусор за ним прибирает работодатель. Но если ошибка совершается профессионалом, то устранять последствия приходится ему самому.
А если в ваш модуль закрадется ошибка, которая обойдется вашей компании в $10 000? Непрофессионал пожмет плечами, скажет: «Вся-кое бывает», и продолжит писать следующий модуль. Профессионал должен выписать своей компании чек на $10 000!
#programming
Forwarded from Clean Code
Favor functional programming over imperative programming
Отдавайте предпочтение функциональному программированию над императивным.
Функциональные языки программирования могут быть чище и проще для тестирования. Используйте этот стиль, когда сможете. Однако нужно быть предельно осторожным и хорошо понимать, что делает функция и как именно она выполняется, иначе это может привести к накладным расходам.
#functions
Отдавайте предпочтение функциональному программированию над императивным.
Функциональные языки программирования могут быть чище и проще для тестирования. Используйте этот стиль, когда сможете. Однако нужно быть предельно осторожным и хорошо понимать, что делает функция и как именно она выполняется, иначе это может привести к накладным расходам.
#functions
5 вредных привычек, от которых программист должен избавиться прямо сейчас.
У программистов существуют привычки программирования, которые ведут себя точно так же, как и любые другие жизненные привычки: от них трудно избавиться, независимо от того, хорошие они или плохие.
Достаточно сложно отделить хорошие и плохие привычки программирования из-за большого количество различных языков и платформ, но существуют некоторые общие привычки, которые никогда не дадут вам хорошего результата.
#programming #selfimprovement
У программистов существуют привычки программирования, которые ведут себя точно так же, как и любые другие жизненные привычки: от них трудно избавиться, независимо от того, хорошие они или плохие.
Достаточно сложно отделить хорошие и плохие привычки программирования из-за большого количество различных языков и платформ, но существуют некоторые общие привычки, которые никогда не дадут вам хорошего результата.
#programming #selfimprovement
Medium
5 вредных привычек, от которых программист должен избавиться прямо сейчас.
Лучший способ избавиться от вредной привычки — бросить ее.
Never ask permission to refactor
Никогда не спрашивай разрешения на рефакторинг. Никогда не спрашивайте разрешения на написание тестов. Вы делаете эти вещи, потому что ЗНАЕТЕ, что они — лучший способ двигаться быстро.
Когда вы спрашиваете разрешения, вы просите кого-то другого взять на себя ответственность за ваши действия.
#tips #selfimprovement
Никогда не спрашивай разрешения на рефакторинг. Никогда не спрашивайте разрешения на написание тестов. Вы делаете эти вещи, потому что ЗНАЕТЕ, что они — лучший способ двигаться быстро.
Когда вы спрашиваете разрешения, вы просите кого-то другого взять на себя ответственность за ваши действия.
#tips #selfimprovement
This media is not supported in your browser
VIEW IN TELEGRAM
Sharpen
Sharpen - это расширение Visual Studio, которое добавляет новые возможности языка C# в вашу существующую кодовую базу. Он делает ваш код короче, проще, выразительнее, производительнее и читабельнее, одним словом - острее.
GitHub
#programming #tools
Sharpen - это расширение Visual Studio, которое добавляет новые возможности языка C# в вашу существующую кодовую базу. Он делает ваш код короче, проще, выразительнее, производительнее и читабельнее, одним словом - острее.
GitHub
#programming #tools
Как писать Xороший Код под прессингом.
Написание кода очень часто напоминает работу хирурга, который всеми силами пытается спасти человеческую жизнь в условиях острой нехватки времени. Он находится под сильным
#cleancode #selfimprovement
Написание кода очень часто напоминает работу хирурга, который всеми силами пытается спасти человеческую жизнь в условиях острой нехватки времени. Он находится под сильным
“прессом”
, поскольку дедлайн не подлежит обсуждению...#cleancode #selfimprovement
Medium
How to Write Good Code Under Pressure.
Как писать хороший код под прессингом
Вы должны быть уверены в том, что ваш код работает.
Но как это узнать? Легко. Протестируйте его и сделайте это несколько раз.
В то же время у нас есть графики и сроки, которые необходимо соблюдать, и если тратить все время на тестирование, то когда писать код? Все верно! Поэтому тестирование следует автоматизировать. Напишите модульные тесты, которые можно выполнить в любой момент, и запускайте их как можно чаще.
Но сколько именно кода нам нужно покрыть тестами? Весь код! Без исключения. Скажете, я предлагаю 100% тестовое покрытие кода? Ничего подобного. Я не предлагаю, а
Может, это нереалистично? Почему? Вы пишете код, потому что ожидаете, что он будет выполняться. Если вы ожидаете, что код будет выполняться, то вы должны знать, что он работает. А знать это можно только в одном случае — по результатам тестирования.
#tdd
Но как это узнать? Легко. Протестируйте его и сделайте это несколько раз.
В то же время у нас есть графики и сроки, которые необходимо соблюдать, и если тратить все время на тестирование, то когда писать код? Все верно! Поэтому тестирование следует автоматизировать. Напишите модульные тесты, которые можно выполнить в любой момент, и запускайте их как можно чаще.
Но сколько именно кода нам нужно покрыть тестами? Весь код! Без исключения. Скажете, я предлагаю 100% тестовое покрытие кода? Ничего подобного. Я не предлагаю, а
требую
. Каждая написанная вами строка кода должна быть протестирована. Точка.Может, это нереалистично? Почему? Вы пишете код, потому что ожидаете, что он будет выполняться. Если вы ожидаете, что код будет выполняться, то вы должны знать, что он работает. А знать это можно только в одном случае — по результатам тестирования.
#tdd
Forwarded from Clean Code
Don't ignore caught errors
Не игнорируйте обнаруженные ошибки.
Ничего не делать с обнаруженной ошибкой не дает вам возможности исправить или отреагировать на указанную ошибку. Вывод ошибки на консоль (console.log) не намного лучше, так как часто он может потеряться в море других вещей, напечатанных на консоли. Если вы добавляете какой-либо фрагмент кода в try / catch, это означает, что вы думаете, что там может произойти ошибка, и поэтому вам нужно правильно на нее отреагировать.
#errors
Не игнорируйте обнаруженные ошибки.
Ничего не делать с обнаруженной ошибкой не дает вам возможности исправить или отреагировать на указанную ошибку. Вывод ошибки на консоль (console.log) не намного лучше, так как часто он может потеряться в море других вещей, напечатанных на консоли. Если вы добавляете какой-либо фрагмент кода в try / catch, это означает, что вы думаете, что там может произойти ошибка, и поэтому вам нужно правильно на нее отреагировать.
#errors
Functional Envy
Функциональная зависть - один из «запахов кода». Для методов класса должны быть важны переменные и функции того класса, которому они пренадлежат, а не переменные и функции других классов. Когда метод использует методы доступа другого объекта для манипуляций с его данными, то он завидует области видимости класса этого объекта. Он словно мечнает находиться в другом классе, чтобы иметь прямой доступ к переменным, с которыми он работает.
Метод calculateWeeklyPay обращается к объекту HourlyEmployee за данными для обработки, он завидует области видимости HourlyEmployee и «желает» получить доступ к внутренней реализации HourlyEmployee. Впрочем, иногда функциональная зависть оказывается неизбежным злом.
#cleancode #functions
Функциональная зависть - один из «запахов кода». Для методов класса должны быть важны переменные и функции того класса, которому они пренадлежат, а не переменные и функции других классов. Когда метод использует методы доступа другого объекта для манипуляций с его данными, то он завидует области видимости класса этого объекта. Он словно мечнает находиться в другом классе, чтобы иметь прямой доступ к переменным, с которыми он работает.
Метод calculateWeeklyPay обращается к объекту HourlyEmployee за данными для обработки, он завидует области видимости HourlyEmployee и «желает» получить доступ к внутренней реализации HourlyEmployee. Впрочем, иногда функциональная зависть оказывается неизбежным злом.
#cleancode #functions
Forwarded from Clean Code
Group the blocks by meaning
Группируйте блоки по смыслу. Используйте психологический эффект восприятия — «Эффект близости»: близко расположенные фигуры при восприятии объединяются. Получить код, подготовленный для анализа и обобщения можно, расположив рядом строки, объединенные смыслом или близкие по функционалу, разделив их пустой строкой.
#formatting
Группируйте блоки по смыслу. Используйте психологический эффект восприятия — «Эффект близости»: близко расположенные фигуры при восприятии объединяются. Получить код, подготовленный для анализа и обобщения можно, расположив рядом строки, объединенные смыслом или близкие по функционалу, разделив их пустой строкой.
#formatting
Facade Pattern
В этой статье приводится краткое руководство по использованию паттерна Facade. Данный паттерн проектирования используется в качестве “обертки”, скрывающей детали реализации. С паттерна Фасад начинается цикл статей по паттернам проектирования.
#designpatterns
В этой статье приводится краткое руководство по использованию паттерна Facade. Данный паттерн проектирования используется в качестве “обертки”, скрывающей детали реализации. С паттерна Фасад начинается цикл статей по паттернам проектирования.
#designpatterns
Medium
Design Patterns — A quick guide to Facade pattern.
Паттерны проектирования — краткое руководство по применению паттерна Фасад
Очевидное поведение не реализовано
Согласно «принципу наименьшего удивления», любая функция или класс должны реализовать то поведение, которого от них вправе ожидать программист.
Допустим, имеется функция, которая преобразует название дня недели в элемент перечисления, представляющий этот день.
Если очевидное поведение не реализовано, читатели и пользователи кода перестают полагаться на свою интуицию в отношении имен функций. Они теряют доверие к автору кода и им приходится разбираться во всех подробностях реализации.
#tips
Согласно «принципу наименьшего удивления», любая функция или класс должны реализовать то поведение, которого от них вправе ожидать программист.
Допустим, имеется функция, которая преобразует название дня недели в элемент перечисления, представляющий этот день.
Day day = DayDate.StringToDay(String dayName);
Логично ожидать, что строка "Monday" будет преобразована в Day.MONDAY. Также можно ожидать, что будут поддерживаться стандартные сокращения дней недели, а регистр символов будет игнорироваться.Если очевидное поведение не реализовано, читатели и пользователи кода перестают полагаться на свою интуицию в отношении имен функций. Они теряют доверие к автору кода и им приходится разбираться во всех подробностях реализации.
#tips
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