Questions tagged [dry]
DRY is short for "Don’t Repeat Yourself". This paradigm advocates to avoid code and data redundancy.
140
questions
2
votes
1answer
85 views
Selective method inheritance
I have a lot of classes that are just a CRUD interface for microservices. They only have a param for the endpoint and some of the methods get_list / get_item / create / update / delete / activate / ...
-1
votes
0answers
75 views
use of decorators in Python to provide default function arguments
Background
I have been using Python for a few years now, but I only recently started to consider the use of decorators to reduce redundancy. Specifically, I started to replace default arguments across ...
2
votes
1answer
97 views
DRY principle vs decoupling (business from GUI)
Say I have a business model called Vehicle. Vehicle has many fields but to keep it simple say it looks like:
public class Vehicle {
String ownerName;
String brand;
FuelType fuelType;
}...
4
votes
5answers
216 views
Approaches for comment duplication
For code, we know approaches like DRY and we tend to extract common functionality. What approaches are recommended for comments? Perhaps it's a really open question, so I'm going to go with my ...
-4
votes
1answer
158 views
Best way to structure reusable code using Node.JS, EJS, and front end JS?
I'm more or less learning the MEAN stack (have yet to start on Angular, so currently using straight vanilla JS for front-end) and part of what I'm building for my portfolio is a drag-and-drop form ...
0
votes
2answers
122 views
DRY Violation for Logical Code Organization and Readability
I have a block of code that branches into 2 pathways, let's call them the "simple" and "complex" branch, based on user input.
Either the simple or complex logic has 4 steps, let's call them A, B, C ...
0
votes
0answers
355 views
DRY(Don't repeat yourself) Principle and BFFs (Backend-for-Frontend)
We are about to plan our server architecture and we want to use the BFF strategy with node.js servers to serve multiple front-end apps.
However we also want to be able to scale easily (e.g. a new ...
2
votes
1answer
188 views
Implementing both Sync and Async clients with DRY
I'm developing a client library. I'd like to provide both Sync and Async interfaces to endpoints on a server. They would be rather easy to implement as completely separate entities, but I would like ...
0
votes
2answers
122 views
Reduce DRY for different classes which have the same data model
I have 2 "user" classes which are essentially the same except one is immutable without setters and one is mutable with setters. I have a separate factory for creating each object.
ImmutableUserDto - ...
0
votes
2answers
181 views
Modify Command object inside decorator of CommandHandler(CQRS) or any other practice for avoiding duplication
Currently, we have multiple commands which share two same properties (BookName and ShopId). While handling those commands those properties must be validated with the help of some service. Let's say ...
71
votes
6answers
12k views
What should I consider when the DRY and KISS principles are incompatible?
The DRY principle sometimes forces the programmers to write complex, hard-to-maintain functions/classes. Code like this has a tendency to become more complex and harder to maintain over time. ...
10
votes
5answers
2k views
Too much abstraction making code hard to extend
I'm facing problems with what I feel is too much abstraction in the code base (or at least dealing with it). Most methods in the code base have been abstracted to take in the highest parent A in the ...
-1
votes
1answer
115 views
How to generalize this method for its duplicate/common logic?
I've a method that apparently has quite some duplicate logic, I'd like to generalize it so that their duplicate logic could be shared and reused, also make my code more extensible for future additions....
2
votes
4answers
344 views
Should one-line functions be avoided in jQuery/JavaScript?
So, I had a coworker complain about how I made the following code:
...
var foo = getKendoDropdown(window.foo);
var bar = getKendoDropdown(window.foo);
var sna = getKendoDropdown(window.sna);
var fu = ...
0
votes
3answers
215 views
How to write DRY Unit Tests when order of method calls matters
Suppose I'm writing a calculator engine with a class as follows...
public class ArithmeticExpression
{
ArithmeticExpression Add(double operand) { /* ... */ }
ArithmeticExpression Subtract(...
3
votes
1answer
256 views
How to make updates to data and return list of updates without breaking Command query separation or DRY?
I have a use case to make updates to a slightly complex JSON object and then return the list of changes made (not the updated data). The process of finding the list of changes is extremely similar to ...
1
vote
2answers
118 views
Best practice when creating classes that are solely in charge of the creation of other objects i.e. factories?
I often find myself creating classes that I suffix with 'Factory'. These classes tend to be solely in charge of the creation of a specific class or set of related classes. However I've always felt ...
1
vote
4answers
573 views
Is it bad practice to repeat logic being tested in unit tests?
Often I find myself writing a unit test for code and repeating some or a lot of the logic in the unit test to make the unit test DRY.
For example, consider the following piece of code:
function ...
1
vote
0answers
92 views
How to make view models more DRY? [closed]
When looking at the WPF view model code samples on the web/books almost all of them show same approach for the bind-able properties that are used for the binding and input in the UI and that often ...
1
vote
1answer
145 views
What is the best way to handle the scenario in C++ where there are two methods that are identical, except one is const?
I am currently working on a program in which I encountered an issue (not for the first time) where I have two acessor methods for a data structure. The methods are identical, except one is const and ...
0
votes
1answer
211 views
Keeping steps in sync of long running process and creating common layer for code repetition
I have 1 long running process wrapped inside a method and it is for 2 different types like below:
Type1
Type2
Code:
public interface IBaseType
{
MyResult LongRunningProcess(int jobId,...
0
votes
3answers
1k views
Are there any well known alternatives to the SOLID principles for OO programming? [closed]
I´m looking for some kind of better compilation of principles which takes the old basic concepts (DRY, KISS, etc...) and applies them to OOP related concepts like abstract clasess, interfaces etc...
...
2
votes
2answers
300 views
How to avoid code duplication in two similar projects?
We have a website with a lot of functionality, and we now start another one, which should have a lot of common code with the first one.
What would be the best approach to avoid code duplication?
...
4
votes
5answers
556 views
Is copy and paste the head of for-loop (e.g.:for(let i=0;i<something.length;i++)) violating DRY principle?
For example, in my project, I often found some head of for-loop appears many times, eg:
for(let i=0;i<SharedData.students.length;i++){
SharedData.students[i].something=.....
}
if(isReset){
...
0
votes
1answer
914 views
How to remove code duplication in Web API versioning
I'm working with ASP.NET core web API project, where I have 8 controllers, multiple DTOs being used for request and response and mappers to map models(also used in the web app) with DTOs.
Recently, ...
1
vote
2answers
175 views
DRY or not to DRY in SDK
I'm making contribution to an opensource project by one of the leading hypervisor providers and I have noticed that there is awfully lot of repetition.
Below is what I mean by it, imagine that they ...
6
votes
6answers
641 views
Is duplicating files to avoid programming branching a good or anti pattern?
for example, suppose I need to play different sounds according to "grade":
file list:
fairSound.mp3
goodSound.mp3
excellentSound.mp3
code:
showResult(grade){
if(grade==0 || grade==1){
...
-1
votes
1answer
69 views
My action creators and reducers all mostly look the same - is this a code smell?
Most of my redux actions are 'fetch some data from the database, here's the authentication token', and they for the most part look the same, like this:
action creator
export const fetchDashboard = ...
0
votes
1answer
80 views
ReactJS - proper way to handle a responsive design approach?
I've always used CSS and media queries when it comes to responsive design. I've been developing in ReactJS for a while, but I feel my approach to responsive design is sloppy. I find myself using a mix ...
14
votes
5answers
727 views
Is it possible to apply DRY without increasing coupling?
Assume we have a software module A that implements a function F. Another module B implements the same function as F'.
There are a number of ways to get rid of the duplicate code:
Let A use F' from B....
5
votes
3answers
240 views
How to handle repetitive mallocs/frees in a DRY way in C
So I have a function which is like a constructor for my structure:
MyStructure* CreateMyStructure(...)
{
MyStructure *my_structure;
double *data;
int *colind, *rowptrs;
data = malloc(...
2
votes
1answer
439 views
Is 'Keep it looks similar to sample code' a valid reason to prefer WET over DRY principle?
For example, for oauth, I may need to copy and paste oauth and oauth callback code like it (assume Client is the framework I use, I don't use real framework like google because I want to simplify the ...
15
votes
3answers
526 views
Code coupling introduce by DRY and OOD
I'm looking for guidance about DRY vs Code coupling.
I do not like to duplicate my code and I also do not like code coupling between unrelated modules. So I refactor duplicate code if I find ...
0
votes
1answer
236 views
Is creating near duplicate partial views solely for populating html elements with Ajax returns violating DRY?
Maybe anti-pattern is a better word for this question. I do not know, but I mean a violation of DRY. Id like to reuse a partial view, and I can, but that partial view has other things in it I don't ...
7
votes
4answers
988 views
Don't Repeat Yourself Vs Single Point Of Failure in authentication
In my work we've been tasked with implementing two factor authentication across a number of our web applications which currently share a credentials database (asp.net forms authentication) but have ...
2
votes
4answers
1k views
Put conditional logic inside method for DRY, or keep it outside for readability?
Take the following example which loads an interstitial ad every 10 times user does XYZ in the app, under certain conditions. It is called in multiple places in the code base:
public class AdHandler {
...
1
vote
2answers
123 views
Test on each Authorization endpoints?
I'm writing an API server. The framework we're using is Rails + Pundit + graphql-ruby, but I guess this question is framework-independent.
We have authentication + authorization implemented on the ...
3
votes
1answer
93 views
Organizing Ad-Hoc Tooling in a Muti-Repo Structure
Imagine you have the following scenario. Your organization deploys some app core to its mission. For example if you're Stack Exchange, this might be the customer facing web server. Let's also say you ...
3
votes
5answers
488 views
Does my code violate DRY principle?
Suppose that I have two services Person Service and Company Service and I want to maintain links between them for example a Person is linked to Company because he works there or he owns the company ...
37
votes
3answers
10k views
Is “composition over inheritance” violating “dry principle”?
For example, consider I have a class for other classes to extend:
public class LoginPage {
public String userId;
public String session;
public boolean checkSessionValid() {
}
}
and ...
0
votes
4answers
191 views
How to insert code in a method in a derived class [duplicate]
I have a base class with a method called Update:
Start Update
Code block 1 (An If statement)
Code block 2 (Setting a variable based on the If result)
Code block 3 (A switch which is ...
1
vote
0answers
110 views
Can we break CQS to get some DRY?
In our codebase we have a lot of controllers with a very similar structure:
@my_model.update_owner(something)
if @my_model.update_attributes(params)
return render_object(@my_model)
else
...
1
vote
3answers
180 views
Reduce return type repetition of functions
As an exercise, I recently implemented a simple settings reader class which reads setting values from an INI file into an std::map<std::string, std::string>. The reader method looks like ...
6
votes
6answers
1k views
DRY principle often makes my code more complicated and/or more difficult to understand [duplicate]
This often happens in my projects. Sometime I have this part of code that is very similar to this other part, yet a few lines makes it complicated to keep the code clean and without duplication. Here ...
-1
votes
3answers
420 views
Constructor from interface with minimal repetition
Preface
In an application that is separated by layers or distributed by services it is common to have classes that are very closely related data-wise, but which we wish to have loosely coupled. My ...
4
votes
3answers
167 views
Changing bot application state (Starting → Started → Stopping → Stopped)
I am developing a bot which I need to start and stop at will.
I have 2 buttons in my form, StartButton and StopButton which change the state.
The Bot has 4 possible states: starting, started, ...
1
vote
1answer
679 views
How can you reuse code for similar functions on AWS Lambda?
I have 3 Lambda functions that do very similar things: scrape data from different sections of a website.
Each function returns a collection of objects that have similar properties. The method of ...
0
votes
1answer
109 views
Dry refactoring against database
Our database has an Attribute table and a WorkItem table that are in a many to many relationship using a WorkItemAttribute table. The WorkItemAttribute table contains the foreign keys for each and a ...
0
votes
2answers
123 views
How to share code among different top-level repositories?
My company has one repository that contains five top-level projects, which are all different "services" (that being the flavor of the month). Even though they're all in a single repository, they're ...
3
votes
2answers
265 views
I keep bouncing from “god function” to “tiny SRP functions” how do I break this cycle?
This question is important for me in growing in my technical abilities. I find I swing from end-to-end, like a pendulum, in writing code that is simultaneously DRY yet readable & efficient. And I'...