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 [2014-07-02 21:07]
christian SLA does not advocate splitting up algorithms as they typically operate on a low level anyway; so there is no mixing up of levels
principles:single_level_of_abstraction [2019-08-07 00:20] (current)
52.88.14.253 [Description]
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 19: Line 19:
 All statements of a method should belong to the same level of abstraction. If there is a statement which belongs to a lower level of abstraction,​ it should go to a private method which comprises statements on this level. Doing so will result in smaller methods. All statements of a method should belong to the same level of abstraction. If there is a statement which belongs to a lower level of abstraction,​ it should go to a private method which comprises statements on this level. Doing so will result in smaller methods.
  
-Often the body of a loop can be extracted resulting in a separate private method. Loops should ideally contain a single statement (usually a method call). Sometimes this is not achievable without other drawbacks but certainly large loop bodies can be considered a small+Often the body of a loop can be extracted resulting in a separate private method. Loops should ideally contain a single statement (usually a method call). Sometimes this is not achievable without other drawbacks but certainly large loop bodies can be considered a smell
  
 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 104: Line 104:
 } }
  
-private ResultDto toDto(ResultEntity) {+private ResultDto toDto(ResultEntity ​entity) {
     ResultDto dto = new ResultDto();​     ResultDto dto = new ResultDto();​
     dto.setShoeSize(entity.getShoeSize()); ​       ​     dto.setShoeSize(entity.getShoeSize()); ​       ​
principles/single_level_of_abstraction.1404328026.txt.gz · Last modified: 2014-07-02 21:07 by christian