Автор материала, перевод которого мы публикуем сегодня, говорит, что она прямо-таки одержима написанием чистого кода. Она считает, что код надо писать так, чтобы, во-первых, с ним, в будущем, удобно было бы работать другим программистам, включая его автора, а во-вторых — с учётом возможности расширения этого кода. То есть, нужно стремиться к тому, чтобы в приложение сравнительно просто было бы добавлять новые возможности, и чтобы его кодовую базу было бы удобно сопровождать. Если бы программы писали, учитывая лишь нужды компьютеров, то, вероятно, программисты могли бы выражать свои мысли лишь с помощью нулей и единиц, больше ни о чём не заботясь. В этой статье приводится ряд рекомендаций по написанию качественного кода, проиллюстрированных примерами на JavaScript.
Рубрика «Совершенный код» - 25
7 рекомендаций по оформлению кода на JavaScript
2018-07-30 в 10:38, admin, рубрики: javascript, Блог компании RUVDS.com, разработка, Разработка веб-сайтов, Совершенный кодСопротивления автоматизации тестирования
2018-07-28 в 7:45, admin, рубрики: tdd, кризис, культура разработки, менеджмент, образование, Программирование, решение, Совершенный код, сопротивление, тестирование, Тестирование IT-систем, управление проектамиНесмотря на то, что технологии модульного тестирования существуют уже 30 лет (в 1989 году Кент Бек написал статью “Simple Smalltalk Testing: With Patterns”), тем не менее не все программисты владеют этой технологией и не все компании сделали автоматическое тестирование частью своей корпоративной культуры. Даже несмотря на очевидные преимущества автоматического тестирования, все равно поведенческое сопротивление достаточно сильное. Кто пробовал внедрять автоматические тесты, тот знает, что всегда найдется какая-то причина, почему это не удалось сделать.
Из моего личного опыта внедрения методов надежного программирования в своей компании, в компаниях, которые я консультировал, общения на конференциях, а также из публично доступных источников, я сформулировал типичные возражения и сопротивления, которые препятствуют внедрению культуры автоматического тестирования.
Все возражения я сгруппировал в пирамиду надежного программирования, которая включает четыре уровня:Читать полностью »
Как я стандартную библиотеку C++11 писал или почему boost такой страшный. Глава 4.3
2018-07-27 в 6:07, admin, рубрики: boost, borland c++ builder, c++, c++03, c++11, c++98, gcc, loki, open source, QNX, sfinae, Visual Studio, велосипедостроение, грязные хаки, Компиляторы, кроссплатформенная разработка, макросы, ненормальное программирование, Разработка под Linux, Совершенный код, стандартная библиотека, шаблонное программирование
Краткое содержание предыдущих частей
Из-за ограничений на возможность использовать компиляторы C++ 11 и от безальтернативности boost'у возникло желание написать свою реализацию стандартной библиотеки C++ 11 поверх поставляемой с компилятором библиотеки C++ 98 / C++ 03.
Были реализованы static_assert, noexcept, countof, а так же, после рассмотрения всех нестандартных дефайнов и особенностей компиляторов, появилась информация о функциональности, которая поддерживается текущим компилятором. Включена своя реализация nullptr, которая подбирается на этапе компиляции.
Настало время type_traits и всей этой «особой шаблонной магии». В предыдущих частях данной главы мы рассмотрели мою реализацию базовых шаблонов стандартной библиотеки и в данной части речь пойдет про комбинацию техники SFINAE с шаблонами и немного о кодогенерации.
Ссылка на GitHub с результатом на сегодня для нетерпеливых и нечитателей:
Больше шаблонов C++ под катом.
Читать полностью »
Как я стандартную библиотеку C++11 писал или почему boost такой страшный. Глава 4.2
2018-07-23 в 15:36, admin, рубрики: boost, borland c++ builder, c++, c++03, c++11, c++98, gcc, loki, QNX, sfinae, Visual Studio, велосипедостроение, грязные хаки, Компиляторы, кроссплатформенная разработка, макросы, ненормальное программирование, Разработка под Linux, разработка под windows, Совершенный код, стандартная библиотека, шаблонное программирование
Краткое содержание предыдущих частей
Из-за ограничений на возможность использовать компиляторы C++ 11 и от безальтернативности boost'у возникло желание написать свою реализацию стандартной библиотеки C++ 11 поверх поставляемой с компилятором библиотеки C++ 98 / C++ 03.
Были реализованы static_assert, noexcept, countof, а так же, после рассмотрения всех нестандартных дефайнов и особенностей компиляторов, появилась информация о функциональности, которая поддерживается текущим компилятором. Включена своя реализация nullptr, которая подбирается на этапе компиляции.
Настало время type_traits и всей этой «особой шаблонной магии». В первой части мы рассмотрели мою реализацию самых простых шаблонов стандартной библиотеки, теперь же заберемся «поглубже» в шаблоны.
Ссылка на GitHub с результатом на сегодня для нетерпеливых и нечитателей:
Продолжение погружения в мир «шаблонной магии» C++.
Читать полностью »
Как я стандартную библиотеку C++11 писал или почему boost такой страшный. Глава 4.1
2018-07-18 в 15:50, admin, рубрики: boost, borland c++ builder, c++, c++03, c++11, c++98, gcc, loki, QNX, sfinae, Visual Studio, велосипедостроение, грязные хаки, Компиляторы, кроссплатформенная разработка, макросы, ненормальное программирование, Разработка под Linux, разработка под windows, Совершенный код, стандартная библиотека, шаблонное программирование
Краткое содержание предыдущих частей
Из-за ограничений на возможность использовать компиляторы C++ 11 и от безальтернативности boost'у возникло желание написать свою реализацию стандартной библиотеки C++ 11 поверх поставляемой с компилятором библиотеки C++ 98 / C++ 03.
Были реализованы static_assert, noexcept, countof, а так же, после рассмотрения всех нестандартных дефайнов и особенностей компиляторов, появилась информация о функциональности, которая поддерживается текущим компилятором. Включена своя реализация nullptr, которая подбирается на этапе компиляции.
Настало время type_traits и всей этой «особой шаблонной магии».
Ссылка на GitHub с результатом на сегодня для нетерпеливых и нечитателей:
Погрузимся же в мир «шаблонной магии» C++.
Читать полностью »
Как я стандартную библиотеку C++11 писал или почему boost такой страшный. Глава 3
2018-07-16 в 10:05, admin, рубрики: boost, borland c++ builder, c++, c++03, c++11, c++98, gcc, loki, QNX, sfinae, Visual Studio, велосипедостроение, грязные хаки, Компиляторы, кроссплатформенная разработка, макросы, ненормальное программирование, Разработка под Linux, Совершенный код, стандартная библиотека
Краткое содержание предыдущих частей
Из-за ограничений на возможность использовать компиляторы C++ 11 и от безальтернативности boost'у возникло желание написать свою реализацию стандартной библиотеки C++ 11 поверх поставляемой с компилятором библиотеки C++ 98 / C++ 03.
Были реализованны static_assert, noexcept, countof, а так же, после рассмотрения всех нестандартных дефайнов и особенностей компиляторов, появилась информация о функциональности, которая поддерживается текущим компилятором. На этом описание core.h почти закончено, но оно было бы не полным без nullptr.
Ссылка на GitHub с результатом на сегодня для нетерпеливых и нечитателей:
Итак, продолжим.
Читать полностью »
Как я стандартную библиотеку C++11 писал или почему boost такой страшный. Глава 2
2018-07-13 в 11:37, admin, рубрики: boost, c++, c++03, c++11, c++98, loki, sfinae, велосипедостроение, грязные хаки, Компиляторы, кроссплатформенная разработка, макросы, ненормальное программирование, Разработка под Linux, разработка под windows, Совершенный код, стандартная библиотека
Краткое содержание предыдущих частей
Из-за ограничений на возможность использовать компиляторы C++ 11 и от безальтернативности boost'у возникло желание написать свою реализацию стандартной библиотеки C++ 11 поверх поставляемой с компилятором библиотеки C++ 98 / C++ 03.
Помимо стандартных заголовочных файлов type_traits, thread, mutex, chrono так же были добавлены nullptr.h реализующий std::nullptr_t и core.h куда были вынесены макросы, относящиеся к компиляторозависимому функционалу, а так же расширяющие стандартную библиотеку.
Ссылка на GitHub с результатом на сегодня для нетерпеливых и нечитателей:
Как я стандартную библиотеку C++11 писал или почему boost такой страшный. Введение
2018-07-12 в 16:04, admin, рубрики: boost, c++, c++03, c++11, c++98, loki, sfinae, велосипедостроение, грязные хаки, кроссплатформенная разработка, ненормальное программирование, Разработка под Linux, разработка под windows, Совершенный код, стандартная библиотека
Вместо предисловия
Пожалуй с этой картинки должно начинаться любое повествование о boost, Loki, самостоятельных, да и так же поставляемых с компиляторами реализациях стандартной библиотеки C++.
Да-да, и если вы думали что разработчики стандартной библиотеки для того же g++, clang, Visual Studio или, прости господи, C++ Builder (бывший Borland, а нынешний Embarcadero) — гуру, что не городят костылей, не ломают стандарт под свой компилятор и не пишут велосипедов, то, скорее всего, вы не так активно используете стандартную библиотеку C++ как вам казалось.
Статья написана как рассказ, и содержит много «воды» и отступлений, но я надеюсь, что мой опыт и получившийся код будет полезен тем, кто столкнулся с похожими проблемами при разработке на C++, особенно на старых компиляторах. Ссылка на GitHub с результатом на сегодня для нетерпеливых и нечитателей:
https://github.com/oktonion/stdex (коммиты и конструктивная критика приветствуются)
А теперь, обо всем по порядку.
Читать полностью »
Контрибьютим в Go с помощью статического анализатора go-critic
2018-07-11 в 23:07, admin, рубрики: bugs, codestyle, contributing, Go, golang, linter, open source, performance, static code analysis, Программирование, Совершенный код, управление разработкой
Вы, возможно, помните недавний анонс нового статического анализатора для Go под названием go-critic.
Я проверил с его помощью проект golang/go и отправил несколько патчей, которые исправляют некоторые найденные там проблемы.
В этой статье мы разберём исправленный код, а также будем мотивироваться отправлять ещё больше подобных изменений в Go.
Для самых нетерпеливых: обновляемый список трофеев.
Что не так с std::visit в современном C++
2018-06-30 в 5:29, admin, рубрики: c++, variant, visit, visitor pattern, Программирование, Совершенный кодСигма-тип и вы
Давайте поговорим о простой, но мощной концепции в программировании — сигма-типах.
Сигма-тип (тип-сумма, меченное объединение) может содержать значения одного и только одного из нескольких типов. Например, рассмотрим настройки в INI-подобном файле конфигурации. Пусть каждая настройка может быть строкой, целым или булевым значением. Если бы мы хотели сделать свою библиотеку на C++, мы бы написали что-то вроде этого:
Читать полностью »