A psicologia da legibilidade do código

Tudo o que está escrito abaixo, nunca afirma ser a verdade absoluta, mas ainda representa algum modelo que me ajuda a encontrar maneiras de escrever um código um pouco melhor.

. — . , . , , , , — . « » — , ? ? , ? . . — , .


, . , . . , 7±2 . " " . 4±1, . — , , .

, , . : , , — . . , — , , . . , «» « » — .

imagem

. .

imagem

, , . . « ». — - . , , «» — .

, , , . , . , - « », - .

, — . , . , — - , , . .

- . : , , , . , , . , . . .

. . , . : . , .

-, . , «», . , . : l 1, 0 . — . «» — , ?

. - — . , , , , « » . - , - — . : — .

. , . « » . — - - « ».

, . , , . , , , , , , .


for:

  • A. for(i=0 to N)
  • B. for(theElementIndex=0 to theNumberOfElementsInTheList)

? . ? , B , ( ) . , , .

( , - ):

  • A. strings.IndexOf(x, y)
  • B. s.IndexOf(x, y)
  • C. std.utils.strings.IndexOf(x, y)
  • D. IndexOf(x, y)

, «s» — , «, , ».

, std.utils.strings — , , , , .
D , , , .

, , , IndexOf - . , «strings» , , , a + b, int16.Add(a, b).


, , « , ». :

// A.
func foo() (int, int) {
    sum, sumOfSquares := 0, 0
    for _, v := range values {
        sum += v
        sumOfSquares += v * v
    }
    return sum, sumOfSquares
}

// B.
func GCD(a, b int) int {
      for b != 0 {
              a, b = b, a % b
      }
      return a
}

// C.
func GCD(a, b int) int {
    if b == 0 {
        return a
    }
    return GCD(b, a % b)
}

(foo), , . ? , , , . , B .

// D.
sum = sum + v.x
sum = sum + v.y
sum = sum + v.z
sum = sum + v.w

// E.
sum1 = v.x
sum2 := sum1 + v.y
sum3 := sum2 + v.z
sum4 := sum3 + v.w

, (D) . , 3 . — .


:

  • A. for(i = 0; i < N; i++)
  • B. for(i = 0; N > i; i++)
  • D. for(i = 0; i <= N-1; i += 1)
  • C. for(i = 0; N-1 >= i; i += 1)

, ? , . . — . , - . — . .

— « » . «, ». , « i, N, , i ..».

— « » . , , « ».

. , APL idioms, C++ idioms . , , ( , , ).

. , . — ( ), , .


«» «». , . , Model Controller , , .

: , . - , .

. , , , , — , «» .


, . . , :

[1,2,3].filter(v => v >= 2)

- , «2 3» «1»? «» «»? — , . , , ? select, discard keep.

- . , GetUser(string) , , . , CustomerID ( ) GetUser(CustomerID), GetUserByName(string). .

— . total1, total2, total3 — - . , ( ) . sum, sum_of_squares, total_error — .

— . : « , , UI ». , . - - , , , , .

. . , «» . , , , - .


, :

//     i  0  99
for(var i = 0; i < 100; i++) {

//     4
var a = 4;

, . . ( ) . , , , — . , «» «» — .

— , . , , , . « , Y Z - », « , ...».

.


. ( ) , . -. , , , . - , — , «», «». — , 5 . , 10 ( !) . . — , .

. — .

— . («early return»):

public void SomeFunction(int age)
{
    if (age >= 0) {
        //  -
    } else {
        System.out.println("  ");
    }
}

public void SomeFunction(int age)
{
    if (age < 0){
        System.out.println("  ");
        return;
    }
    
    //  -
}

« -» , , . , «else» - «else» , -, « -», - , , «else» , . .

. . . -, .


« ». , — ? , . «» «». , , , . , — , , ( ) — . , « », - , «» Singleton . , ?

. — , . , — . . — , - . , , .

. :

// A
void MinorFunction1( void ) {
}
 
void MinorFunction2( void ) {
}
 
void MinorFunction3( void ) {
}
 
void MajorFunction( void ) {
    MinorFunction1();
    MinorFunction2();
    MinorFunction3();
}
 
// B
void MajorFunction( void ) {
    MinorFunction1();
    MinorFunction2();
    MinorFunction3();
}
 
void MinorFunction1( void ) {
}
 
void MinorFunction2( void ) {
}
 
void MinorFunction3( void ) {
}
 
 
// C.
void MajorFunction( void ) {
    { // MinorFunction1
    }
 
    { // MinorFunction2
    }
    
    { // MinorFunction3
    }
}

, . , . ( ) — . — , , , , — .

, , , , , , , .. , — . , .

Source: https://habr.com/ru/post/pt399293/


All Articles