
Измеримость и определение качества кода это вечная тема в мире программирования. Думаю все специалисты которые уже имеют опыт с большими проектами с многолетней историей не сомневаются в необходимости поддерживать код в качественном состоянии. Но не всегда достаточно времени для того чтобы выяснить какие характеристики важны именно в этом проекте. В этой статье не будет описано как нужно писать и оформлять код и нужны ли пробелы вокруг скобок. Сегодня я постараюсь выделить самые важные аспекты которым стоит уделять внимание и на что они могут повлиять, а какие допустимые пределы и как за ними следить решать Вам.
Читать полностью »
Рубрика «Совершенный код» - 49
Что такое качество кода и зачем его мерить
2013-12-09 в 13:34, admin, рубрики: качество кода, код, Совершенный код, метки: качество кода, кодВычисление НОД — ошибка, которой не замечают
2013-12-07 в 9:27, admin, рубрики: GCD, Алгоритмы, Совершенный код, метки: GCD, nodЧто такое НОД, все знают еще со школы. Для тех, кто подзабыл, напомню: НОД — наибольший общий делитель, делящий два целых числа без остатка. Например, НОД чисел 100 и 45 равен 5, а НОД чисел 17 и 7 равен 1. Существует несколько различных алгоритмов поиска этого числа. Однако, несмотря на то, что это достаточно простые алгоритмы, часто совершают одну маленькую, но очень существенную ошибку.Читать полностью »
На границах, приложения не являются объектно-ориентированными
2013-12-06 в 12:05, admin, рубрики: .net, best practices, Mark Seemann, инкапсуляция, Программирование, Совершенный код Я получил множество отзывов на мою недавнюю серию постов по Poka-yoke проектированию (я был бы расстроены, если было бы иначе). Множество из этих отзывов касаются различных технологий сериализации или трансляции, используемых обычно на границах приложения: сериализация, XML (де)гидратация (прим. переводчика: тоже самое, что и сериализация), UI-валидация и т.д. Заметьте, что такая трансляция происходит не только по периметру приложения, но также и на уровне сохраняемости (persistence). ORM-ы также являются трасляционными механизмами.
Общим для многих комментариев является утверждение о том, что большая часть технологий сериализации требует наличия конструктора по умолчанию. Например, класс XmlSerializer требует наличия конструктора по умолчанию и публичных, доступных для записи свойств. Большая часть объектно-реляционных преобразователей, которые я изучал, похоже, имеют те же требования. Контролы Windows Forms и WPF (UI – также граница приложения) почти обязаны иметь конструктор по умолчанию. Не нарушает ли это инкапсуляцию? И да и нет.
Читать полностью »
«Запах» проектирования: конструктор по умолчанию
2013-12-06 в 11:53, admin, рубрики: .net, best practices, Mark Seemann, инкапсуляция, Программирование, Совершенный кодЭто пятый пост из серии о Poka-yoke проектировании – также известном, как инкапсуляция.
Конструкторы по умолчанию являются «запахом» в коде. Именно так. Это может звучать возмутительноЧитать полностью »
«Запах» проектирования: излишний атрибут Required
2013-12-06 в 11:38, admin, рубрики: .net, best practices, Mark Seemann, инкапсуляция, Программирование, Совершенный код, метки: best practices, инкапсуляцияЭто четвёртый пост из серии о Poka-yoke проектировании – также известном, как инкапсуляция.
Недавно, я прочитал из какого-то технологического события Microsoft пост, написанный с энтузиазмом:
Атрибут [Required] в коде автоматически создаёт запись в БД, которая не может принимать null, а также создаёт валидацию на веб-странице – симпотично […]
«Запах» проектирования: одержимость примитивами
2013-12-06 в 11:17, admin, рубрики: .net, best practices, Mark Seemann, инкапсуляция, Программирование, Совершенный кодЭто второй пост из серии о Poka-yoke проектировании – также известном, как инкапсуляция.
Множество классов имеют тенденцию к потреблению или раскрытию примитивных значений, таких как int, или string. В то время как такие примитивы существуют на любой платформе, их использование может приводить к процедурному коду. Более того, они обычно нарушают инкапсуляцию, допуская присвоение некорректных значений.
Читать полностью »
«Запах» проектирования: временная связность
2013-12-06 в 11:15, admin, рубрики: .net, best practices, Mark Seemann, инкапсуляция, Программирование, Совершенный код Это первый пост из серии о Poka-yoke проектировании – также известном, как инкапсуляция.
Известной проблемой в проектировании API является временная связность, которая получается в том случае, если в классе присутствуют скрытые отношения между двумя или более членами, требующие от клиента правильной последовательности вызовов. Это жёстко связывает члены класса во временном разрезе.
Читать полностью »
Глупая сортировка и некоторые другие, поумнее
2013-12-05 в 15:14, admin, рубрики: Алгоритмы, быстрая сортировка, пузырьковая сортировка, Совершенный код, сортировка, сортировка вставками, сортировки, Учебный процесс в IT, метки: быстрая сортировка, пузырьковая сортировка, сортировка, сортировка вставками, сортировки 
В прошлой статье мы оттолкнулись от так называемой глупой сортировки и путём нехитрых метаморфоз получили всем известную пузырьковую сортировку. Трансформируя последнюю пришли к целому вороху обменных способов упорядочивания массивов. Один из которых, между прочим, на структурах до нескольких тысяч элементов, даже работает быстрее чем быстрая сортировка.
Сегодня мы снова возьмём за основу stupid sort и внесём в неё другое маленькое, но существенное изменение. В результате получим совершенного другой эволюционный ряд сортировочных алгоритмов.
image: эволюция
Стоит ли до верится спел чек еру? Про стой пять ни чинный пост до бра
2013-11-29 в 12:55, admin, рубрики: Brainfuck, Веб-разработка, грамматика, общение, Совершенный код, метки: грамматика, общение 
До вольно не редко приходиться на ходить враз личных текст ах не сколько о шибок. При чём большая части на писано во общем то грамот но, но нет-нет да и на рвётся глас на не верное при мнение слово форм. На пример из вечное не верное из пользование со ответствующих пост фиксов. По мимо э того в друг от делиться при ставка или при лепиться пред лог, как до ста точный при мер, и к роме того не редко до водиться не на ходить за пятых на за конных места х.
В той связист ала по степенно при ходит мыс ль что не плохо бы на ваять та кой пост в ко тором бы лоб макс и мал но воз можно е коли чес т во о шибко но что бы тестовый процесс ор да же бы и не за подозревал об том что что-то тут не так. Но что бы при том сам текст был на имение читаем им.
Продолжение проверки Geant4
2013-11-14 в 11:35, admin, рубрики: bugs, c++, CERN, copy-paste, pvs-studio, Блог компании PVS-Studio, ошибки в коде, Совершенный код, статический анализ кода, метки: bugs, c++, CERN, copy-paste, pvs-studio, ошибки в коде, Си, статический анализ кодаНаписал правильную статья про проверку проекта Geant4. Напомню предысторию. Недавно была проверена старая версия библиотеки Geant4 и написана статья "Copy-Paste и мюоны". Почему была проверена старая версия? Люди не совершенны. Суть оплошности можно узнать в предыдущей статье. Теперь же вашему вниманию предлагается краткий отчет о проверке Geant4 версии 10.0-beta.
