User Tools

Site Tools


principles:single_level_of_abstraction

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
principles:single_level_of_abstraction [2021-09-02 18:14]
65.21.179.175 old revision restored (2021-09-02 10:46)
principles:single_level_of_abstraction [2021-10-18 22:03]
christian +++ restored +++
Line 1: Line 1:
 ====== Single Level of Abstraction (SLA) ====== ====== Single Level of Abstraction (SLA) ======
- 
 ===== Variants and Alternative Names ===== ===== Variants and Alternative Names =====
 +
  
   * One Level of Abstraction   * One Level of Abstraction
Line 12: Line 12:
 ===== Principle Statement ===== ===== Principle Statement =====
  
-Each method should be written in terms of a single level of abstraction+Each method should be written in terms of a single level of abstraction.
  
  
Line 23: Line 23:
 A further indicator for a missing method is the combination of a blank line, a comment and a block of code. In most of the cases the code block should go to a new private method. This also makes the comment obsolete as the new method carries a name which typically resembles the comment.  A further indicator for a missing method is the combination of a blank line, a comment and a block of code. In most of the cases the code block should go to a new private method. This also makes the comment obsolete as the new method carries a name which typically resembles the comment. 
  
-Sometimes extracting the method would result in the new method having a large number of parameters. Alternatively the parameters could be converted to fields of the class. But this would often result in bad [[glossary:cohesion]]. Because of that in such a case extracting a new class is the next step in adhering to the principle.+Sometimes extracting the method would result in the new method having a large number of parameters. Alternatively the parameters could be converted to fields of the class. But this would often result in bad [[glossary:cohesion]]. Because of that in such a case extracting a new class is the next step in adhering to the principle.  
  
 ===== Rationale ===== ===== Rationale =====
Line 89: Line 89:
         result.add(dto);         result.add(dto);
     }     }
 +    return result;
 } }
 </code> </code>
  
-There are two levels of abstractions in this method. First there is the loop which acts upon the whole ''resultSet'' and second there is the loop body which converts a single ''entity'' to a [[patterns:Data Transfer Object|DTO]]. For the latter there is no syntactical grouping. The reader of the code has to find out that the first four lines of the loop body belong together. The code also doesn't explicitly state that these four lines convert an ''entity'' to a DTO. So the following code is better:+There are two levels of abstractions in this method. First there is the loop which acts upon the whole result set and second there is the loop body which converts a single entity to a [[patterns:Data Transfer Object|DTO]]. For the latter there is no syntactical grouping. The reader of the code has to find out that the first four lines of the loop body belong together. The code also doesn't explicitly state that these four lines convert an entity to a DTO. So the following code is better:
  
 <code java> <code java>
Line 134: Line 135:
  
 Discuss this wiki article and the principle on the corresponding [[talk:principles:Single Level of Abstraction|talk page]]. Discuss this wiki article and the principle on the corresponding [[talk:principles:Single Level of Abstraction|talk page]].
 +
principles/single_level_of_abstraction.txt · Last modified: 2021-10-18 22:03 by christian