कोड पठनीयता का मनोविज्ञान

सब कुछ जो नीचे लिखा गया है, कभी भी पूर्ण सत्य होने का दावा नहीं करता है, लेकिन फिर भी कुछ मॉडल का प्रतिनिधित्व करता है जो मुझे व्यक्तिगत रूप से थोड़ा बेहतर कोड लिखने के तरीके खोजने में मदद करता है।

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


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

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

image

. .

image

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

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

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

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

. . , . : . , .

-, . , «», . , . : 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/hi399293/


All Articles