Questions tagged [code-smell]
Determining what is and is not a "code smell" is subjective, and varies by language, developer and development methodology. Before you ask if some technique is a "code smell," ask yourself what the consequences to your specific project would be, if you used the technique. Simply asking whether something is a "code smell" or not is too subjective.
177
questions
-3
votes
0
answers
44
views
Approach for rewriting NUnit tests after refactoring method [closed]
I am refactoring a core method that has 30-odd arguments such that it will have only two.
Currently, unit tests look something like this:
[Test]
public async Task TestA1()
{
BigTestMethod(
...
3
votes
4
answers
522
views
Why is "dependency injection" ok, but not "the opposite of preserve whole object (pass required parameters only)"?
According to Why should I use dependency injection?, "dependency injection" has some advantages, for example:
"Non dependency injection" version:
public class Client{
private ...
0
votes
0
answers
198
views
Is "parallel composition hierarchies" a code smell?
For example, suppose I have a mobile app that uses some user data, the DTO:
class UserData{
public:
Address address;
bool isVerified=false;
};
class Address{
};
The UserData may be loaded from ...
2
votes
3
answers
177
views
Is it still "feature envy" if the state to make decision or the action to take after asking the state involves other classes to participate?
According to https://softwareengineering.stackexchange.com/a/212130/432039, if a class asks another class for the state, and then call methods of that class, it is called "feature envy", eg:
...
6
votes
4
answers
1k
views
How to avoid init methods when 2 objects need the reference of each other?
According to https://softwareengineering.stackexchange.com/a/334994/432039, I know init is a code smell and should be avoided, and one of the solutions is to use a builder to hold the state first ...
-1
votes
4
answers
302
views
Is setting a flag in a loop a code smell?
I have a loop that I am testing a condition in but if the condition is not met then after the loop is complete, I want to execute another code block:
Boolean loopConditionNotMetFlag = true;
for (List&...
0
votes
3
answers
336
views
How to refactor "init()" into "physically make them two separate classes"?
According to https://softwareengineering.stackexchange.com/a/334994/432039, I know "init()" method is a code smell, and "physically make them two separate classes" is a way to ...
0
votes
2
answers
346
views
Is it considered a code smell to not delete static pointers of a singleton?
I have a singleton that needs to be initialized at the start of the program and it will live on until the end of the program. As is usual in this pattern, a function initializing the singleton creates ...
1
vote
3
answers
266
views
What is the code smell called when API are encapsulated many times [closed]
In legacy code bases, some APIs might be encapsulated by different developers with separate classes many times. Example:
public void calculate(int baseIncome) {
revenueCalculator.calculate(...
0
votes
6
answers
1k
views
Is a static class full of static methods a code smell?
I have to create custom buttons but in order to encapsulate the logic of button creation I've this class (VB.net):
Public Class ButtonCreator
Public Shared Function CreateBaseButton(Optional ...
1
vote
3
answers
1k
views
Are "Distributed Enums" an Anti-pattern in non-OOP like they seem to be considered in OOP?
I have recently read about the so-called "distributed enum anti-pattern." In particular, as it relates to using enums in conditional statements. (The idea is apparently that if you were to ...
2
votes
2
answers
202
views
Does using primitive types instead of user-defined types reduce dependencies?
Suppose I have a member function void A::foo(B const &b) where a class B instance is just a bunch of data. Would it not be better to remove the dependency between class A and class B by rewriting ...
-1
votes
2
answers
212
views
Is it a code smell to put selection strategy concerns in an enum class?
Right now, I have this enum, called MemberCategory, defined to be:
public enum MemberCategory {
MEMBERSHIP("Membership"),
GOLD_MEMBERSHIP("Gold"),
SILVER_MEMBERSHIP(&...
0
votes
1
answer
84
views
Better design for a REST import into web store
I have an import that needs to grab data from a REST service and import into an web store. It's basically an ETL type of service, but because the REST service can be slow and I don't want to call it ...
3
votes
4
answers
2k
views
Is checking if a new GUID exists before insert a code smell?
Say I use GUIDs as keys. Considering the chance of a duplicate GUID being generated being what they are, is code like this considered a code smell?
Guid newID = GenerateGuid();
while (dictionary....
0
votes
2
answers
2k
views
Is "error first" better than "if-else", why? [duplicate]
I have an eternal discussion in my work about why "error first" is "worng".
In order to ensure what I try to tell with error first is the following code pattern:
if condition:
...
0
votes
1
answer
71
views
MVVM List<T> from Model to View
I am writing a control app for a 6-DOF robot.
This app can send scripts to the robot, which in turn executes these and thus moves around.
In the app a robotprogram can be created by adding 3D ...
104
votes
9
answers
24k
views
Is putting general-use functions in a "helpers" file an anti-pattern or code smell?
Is it an anti-pattern or code smell to put "general use" functions (examples below) into a catch-all file named "helpers" or "utils"?
It's a pattern I've seen quite a lot ...
0
votes
4
answers
1k
views
Refactoring two methods with similar for loops containing some unique logic
Please help me with the following code refactoring, I spent so much time researching it and there's still no clear answer on how to approach it. Any help is greatly appreciated!
So, given 2 methods (C#...
29
votes
4
answers
4k
views
Law of Demeter and over-wide interfaces
The Law of Demeter makes sense in some obvious cases.
# better
dog.walk()
# worse
dog.legs().front().left().move()
dog.legs().back().right().move()
# etc.
But in other cases it seems to lead to an ...
1
vote
2
answers
778
views
What is Insider Trading Bad Smell?
In Martin Fowler's refactoring book, there is a code smell named "Insider Trading" which I don't understand:
Software people like strong walls between their modules and complain bitterly ...
6
votes
1
answer
1k
views
Why would it be considered bad practice if a concrete class inherits from only one Mixin?
I'm referring to "Fluent Python" by Luciano Ramalho. In chapter 12, there's a section "Coping with Multiple Inheritance" where the author suggests a few best practices, such as:
...
1
vote
2
answers
798
views
How to avoid cascading dynamic casts?
So, in general casting and dynamic_cast in particular are to be avoided.
But I don't see a proper alternative for this:
List<DerivedA*> ListA;
List<DerivedB*> ListB;
Bool Add(Base* obj)
{
...
-3
votes
3
answers
499
views
Is there a name for the code smell where we add different types of objects to a list or array instead of defining a new data structure? [closed]
I came across a question earlier where someone asked how to create an array list with multiple object types (Create an ArrayList with multiple object types?).
The easiest solution is to create a list ...
0
votes
2
answers
228
views
Avoiding sequential coupling while maintaining separation of concerns
Got a desktop application that interacts with some stateful third party web APIs. Its an interactive application, at some stages it has to halt execution and prompt for user input based on responses ...
-1
votes
1
answer
657
views
Is frequent use of bind(this) in Javascript a code smell?
I am doing a project for a client where I am getting my first real heavy, hands-on exposure with Javascript.
Since I have learned about adding .bind(this to callback functions, I find I am doing it ...
3
votes
7
answers
392
views
Problem with runaway number of properties
Rewritten Question
I appreciate the feedback and in response to that I'm re-writing my question. I can't give my specific situation (classes, etc), nor do I think that it would be helpful, as I work ...
1
vote
3
answers
737
views
Feature Envy vs. Single Responsibility Principle: Data class and a validator for it
Let's say I have a class that's a bit more than a pure Data object, i.e. it holds some data and some basic queries about that data. (In this case, it's a class representing a timetable)
Now, I want ...
2
votes
1
answer
63
views
Should a Mover and Tracker be separate classes to maintain SRP?
I'm doing some Java code practice to better understand the Single Responsibility Principle. Currently, I'm working with a network of data structures, where each structure implements an interface ...
2
votes
0
answers
112
views
Code quality balancing with need to perform scientific analysis on your own software
We have a project that is meant to do signal processing. If all we had to do with the software was that one job, we would have a pretty clean architecture. Unfortunately, we've run into an issue most ...
-1
votes
2
answers
87
views
How to set object parameters
I am rewriting a lexer class that has several "parameters" like whitespaceSplit.
So it goes this way:
lexer = new Lexer();
lexer.whitespaceSplit = true;
lexer.otherParameter = ...;
lexer.parse(file);...
35
votes
9
answers
45k
views
Is there a better way to use C# dictionaries than TryGetValue?
I find myself often looking up questions online, and many solutions include dictionaries. However, whenever I try to implement them, I get this horrible reek in my code. For example every time I want ...
0
votes
1
answer
138
views
Is a "concrete function" over "generic function" a good implementation?
I want to know others opinion about this approach that I use in a lot of projects, for example, I can show the last time that I use it:
public class DataStorageService {
private enum Keys {
...
0
votes
1
answer
499
views
use always get and set methods is a bad practique, is call directly an attribute class a bad practique in OOP?
I have a doubt about if there are some recommendations for call directly an attribute in a class
I think that in OOP you always should call an attribute by the get method.
For example:
On set
...
-1
votes
5
answers
286
views
How can I efficiently write a complex if or switch condition that depends on a combination of two (or more) variables? [duplicate]
In my current case, I've got two variables. Let's call them action and status for ease of use. They can have any value between 1 and 9. Depending on business logic, I've to either call subActionA() or ...
10
votes
4
answers
2k
views
is this way of calling a function a bad practice?
I have the following code:
public void moveCameraTo(Location location){
moveCameraTo(location.getLatitude(), location.getLongitude());
}
public void moveCameraTo(double latitude, double ...
0
votes
1
answer
1k
views
Two reversed dictionaries or one dictionary with key and value lookup?
I have situation where in the Repository class I have a dictionary:
Dictionary<TableName, Dictionary<EntityColumnName, SourceColumnName> map1 = new Dictionary<TableName, Dictionary<...
2
votes
4
answers
141
views
Date comparison with the last second of a day
Would you consider
WHERE SomeDate <= '2018-01-01 23:59:59'
instead of
WHERE SomeDate < '2018-01-02'
When the intention is that SomeDate goes no further then 2018-01-01
a code smell and if ...
0
votes
5
answers
3k
views
Is using the Pair class a sign of primitive obsession code smell?
Let's say I use a Pair in this way:
Pair<Long, Date> signup = getSignup();
System.out.println("User with ID " + signup.getLeft() + " signed up on " + signup.getRight());
Is it a form of ...
5
votes
2
answers
504
views
Class that returns multiple unrelated values, are there better way to accomplish this?
I have a "tracker" class. This class tracks objects from a given input image. But in addition to this, there is another parameter that corresponds to a value used in generating the image. The ...
3
votes
1
answer
1k
views
How do I use polymorphism instead of instanceof?
I'm trying to make an abstract board game. In the game, a player can choose to make multiple actions within one turn such as placing, moving, or rotating a piece. I'm not sure if whether or not my ...
-1
votes
1
answer
94
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 = ...
1
vote
1
answer
225
views
Why is using an internal attribute to filter objects considered OK, but when I use a map to filter based on attributes, it's considered a code smell?
A long time ago I asked about using an enum to essentially use as a poor version of instanceof to make decisions about an object.
As stated in this answer:
When your weapon types enum just mirrors ...
-1
votes
1
answer
138
views
Have an object communicate with another object
I asked similar question earlier this morning, and for whatever reason, I'm not getting a complete answer to my question. I'll ask it a different way.
I was attempting to understand Eric Lippert's ...
2
votes
2
answers
147
views
Using a Collection with Attributes to Check and Make Decisions
I was reading on this SESE page about using a variable to indicate the object type, more specifically, an enum.
The accepted answer states:
When your weapon types enum just mirrors the class ...
0
votes
2
answers
473
views
Formatting a string by converting to a number then back to a string
I'm not sure whether this qualifies as code smell, or if there may be some better way of performing the same task, but, basically, I want to format a 10 digit string, using C#, and have the following ...
3
votes
5
answers
1k
views
Using a variable to indicate object type
The use of instanceof or getClass() is largely considered code smell. Is using a variable to indicate the type of object you're using also considered code smell?
Suppose if I had an enum called ...
0
votes
2
answers
157
views
Building dynamic code that can still handle many one-offs?
So we're having a rather heated debate at work as to what would be the best practice going forward while refactoring our reporting system. Most of us have some strong opinions one way or the other, ...
18
votes
2
answers
17k
views
Should a trait refer to parent methods?
Is it a code smell if the methods in my trait refer to parent::methods or to methods that are assumed to be in the utilising class?
A random (senseless) example
trait foo
{
public function bar()
...
4
votes
1
answer
9k
views
How to improve a pattern 'enum class with methods'
Over many years, I always find myself reconsidering this design, so I wanted to get some feedback on my solution to it.
Problem:
I need a limited amount of objects = instances from a class, and I ...