Публикации по теме 'dry'
Принятие принципа DRY (не повторяйтесь): руководство по эффективному коду и сопровождению
В мире разработки программного обеспечения принцип DRY (не повторяйся) является фундаментальным принципом, выступающим за эффективность кода и удобство сопровождения. DRY призывает разработчиков избегать дублирования кода и вместо этого способствует повторному использованию, абстракции и модульности. Придерживаясь этого принципа, разработчики могут создавать более чистые и эффективные кодовые базы, которые легче поддерживать и развивать с течением времени. В этой статье мы рассмотрим..
Размышления DRY тогда и сейчас
Я был вдохновлен написать это после того, как прочитал отличный пост в блоге о DRY: https://gordonc.bearblog.dev/dry-most-over-rated-programming-principle/
Когда я начал свою карьеру, я довольно быстро узнал о DRY. В кодовой базе, над которой я работал, было очень мало тестов и много дублированных бизнес-правил, которые не должны были дублироваться, так что принцип имел смысл. Однако кодовая база также имела массу повторного использования, что было еще более проблематичным. Такие вещи,..
Старый добрый подход к табличному тестированию
Чаще всего мне приходится тестировать фрагмент кода, подобный следующему.
const formatHourFromAMPMto24 = (hour, period) => {
// ...
// Some addition and substraction logic that converts
// an AMPM formatted hour to 24 hour format and returns it
}
Достаточно просто проверить правильно? Давайте напишем пару тестовых случаев, которые охватывают некоторые входные и выходные ситуации. Да, и давайте также удостоверимся, что мы покрываем некоторые крайние случаи, такие как 12PM и 12AM.
Шаблон проектирования буквенных таблиц в C
Всегда сложно сохранять сжатый и безопасный код C / C ++. Вот шаблон проектирования, который сохраняет ваш код «СУХИМ» при «распределении» некоторых фиксированных данных по определению «enum», определению массива, оператору переключения и другому коду. Он также известен под названием X-macro.
Пример:
enum Size {
SIZE_SMALL,
SIZE_MEDIUM,
SIZE_LARGE
};
int sizeRanges[][2] = { {0, 10}, {11, 14}, {15, 20} };
const char *getSizeName(enum Size size) {
switch (val) {
case..
Вопросы по теме 'dry'
DRY и подобные запросы
Работая над конкретным приложением, я снова и снова пишу очень похожие запросы. Они не совсем одинаковы, но имеют очень похожую форму и встроены в почти идентичные фрагменты кода, например, ,
$Mysqli = new mysqli;
if ($Stmt =...
254 просмотров
schedule
27.12.2022
Операторы DRY LINQ для таблиц с общими столбцами
Вот интересная проблема. Есть ли способ написать некоторый код с использованием LINQ to SQL, который способен выполнять ОБНОВЛЕНИЕ таблицы, зная только, что данная таблица содержит столбцы x, y, z, но не зная во время компиляции, с какой таблицей он...
364 просмотров
schedule
01.07.2023
Как сбалансировать принцип DRY с минимизацией зависимостей?
У меня проблема с принципом DRY (не повторяйтесь) и минимизацией зависимостей, которые вращаются вокруг механизмов правил Rete.
Механизмы правил в крупных ИТ-организациях, как правило, относятся к Enterprise (обратите внимание на заглавную букву...
740 просмотров
schedule
10.01.2023
Как сгенерировать неконстантный метод из константного метода?
Стремясь к константной корректности, я часто пишу такой код
class Bar;
class Foo {
public:
const Bar* bar() const { /* code that gets a Bar somewhere */ }
Bar* bar() {
return const_cast< Bar* >(
static_cast< const Foo*...
1791 просмотров
schedule
08.09.2022
Частичная форма DRY для создания и обновления
У меня есть частичная форма _form.html.erb, которая помогает высушить мой код, но мне нужно, чтобы форма имела разные метки в зависимости от того, создаю ли я нового пользователя или обновляю существующего пользователя.
Вот моя форма частичная....
3878 просмотров
schedule
22.04.2023
Утиная печать: как бы вы поступили в этой ситуации
Относительно новый для python. Недавно я опубликовал вопрос о проверке того, что тип данных является логическим. [ Используйте дескриптор (EDIT: не один декоратор) для нескольких атрибуты?
В данных ответах упоминается утиная печать. У меня...
157 просмотров
schedule
29.12.2023
Рефакторинг wpf DataGridTextColumn
Я использую DataGrid в приложении WPF, которое имеет несколько столбцов (буквально по одному на каждый день недели), которые отличаются только своим индексом данных. Образец xaml приведен ниже.
Как я могу реорганизовать это во что-то более СУХОЕ?...
960 просмотров
schedule
18.05.2023
Улучшение использования MVC
Я занят созданием приложения MVC на PHP с использованием фреймворка Kohana MVC, и оно работает очень хорошо. Но есть небольшие досады, на которые я хотел бы обратить внимание.
Много логики повторяется в действиях в контроллерах и самих...
140 просмотров
schedule
05.10.2022
CakePHP: AppController для доступа к модели производного контроллера
Я хочу реализовать общие действия «добавить» в AppController. Для этого мне нужно получить доступ к соответствующей модели производного контроллера.
Как мне это сделать?
2287 просмотров
schedule
06.06.2022
Куда в Rails поместить части, общие для всего приложения?
Куда я могу поместить частичные файлы, используемые более чем одной моделью? У меня есть страница под названием crop.html.erb , которая используется для одной модели - Photo . Теперь я хотел бы использовать его и для другой модели под названием...
17537 просмотров
schedule
24.01.2023
Как упростить мой помощник и сделать его более сухим, когда есть похожие Модели?
У меня возникают некоторые трудности с тем, чтобы сделать это более СУХИМ:
http://gist.github.com/471225
Суть его вот в чем:
У меня есть куча моделей, contact_email, contact_call, contact_letter и так далее.
Они были необходимы для меня,...
66 просмотров
schedule
12.05.2023
Как высушить условную структуру ruby, необходимую для Rails
Я обнаружил, что мне часто приходится использовать структуру, чтобы избежать ошибки Rails undefined method 'name' for nil:NilClass .
Структура выглядит следующим образом:
if country.state
country.state.name
end
Это похоже на...
256 просмотров
schedule
12.04.2023
Как высушить в Ruby?
Как я могу сделать это короче и расширить:
def overview
puts "All As:"
for f in @a
puts f
end
puts "\n"
puts "All Bs:"
for f in @b
puts f
end
end
1068 просмотров
schedule
24.06.2022
Использование принципа DRY в XML
У нас есть продукт, в котором у каждого клиента есть конфигурационный XML-файл, содержащий наборы опций и подопций пользовательского интерфейса. Например, один тип пользователей (назовем их А) имеет один набор опций, а другой тип пользователей (Б)...
304 просмотров
schedule
19.03.2023
DRY: Советы, как не дублировать код?
Хорошо, вот мой вопрос, у меня есть база данных с такой схемой
+-------------+ +------------+ +-----------+
+ Object + + car + + computer +
+-------------+ +------------+ +-----------+
+ id + + object_id + + object_id +
+...
813 просмотров
schedule
25.10.2023
DRY против безопасности и ремонтопригодности с MVC и моделями просмотра
Мне нравится стремиться к СУХОМУ, и, очевидно, это не всегда возможно. Тем не менее, я должен почесать голову над концепцией, которая кажется довольно распространенной в MVC, "Модель представления".
Модель представления предназначена для передачи...
780 просмотров
schedule
17.06.2023
rails 3 сухой ненавязчивый javascript
Я меняю все на ненавязчивый javascript, так как я думаю, что это значительно упрощает отладку и т. д.
У меня есть что-то вроде:
$(document).ready(function(){
$('#photos_link').click(function()
{
select_tab('main', 'photos', $(this));...
321 просмотров
schedule
19.09.2023
Как оставаться сухим при использовании шаблонов Javascript и ERB (Rails)
Я создаю приложение Rails, которое использует Pusher для использования веб-сокетов для отправки обновлений непосредственно клиенту. В JavaScript:
channel.bind('tweet-create', function(tweet){ //when a tweet is created, execute the following...
5150 просмотров
schedule
19.07.2023
Пользовательская проверка MVC 3 и DRY
Если я что-то не упустил (что очень возможно), мне кажется, что пользовательская проверка всегда нарушала DRY. Во всех примерах, которые я видел, даже с совершенно новой ненавязчивой проверкой клиента, представленной с MVC 3, мы должны создать код...
1224 просмотров
schedule
01.09.2023
Улучшить ненавязчивый javascript (и, возможно, использовать CoffeeScript) в приложении Rails
У меня есть приложение, которое использует Javascript для основных запросов Ajax, таких как автозаполнение и поиск в реальном времени. Например, я реализовал живой поиск следующим образом; Я заметил потенциальную проблему и хотел бы поговорить с...
1507 просмотров
schedule
02.07.2023