클린 코드 44p 중

함수의 규칙

1. 함수는 작게

2. 한 가지 기능만 해라

 

여기서 한 가지란?

추상화 수준. 즉, 이름에 맞는 일 한 가지 

단순히 표현만 다른 것이 아니라 의미 있는 이름으로 다른 함수가 추출된다면

이 함수는 한 가지 기능만 하는 것이 아니다.

한 가지 기능만 수행하려면 함수 내의 추상화 수준이 동일해야 한다.

 

추상화 수준은 높낮이가 있다.

높을수록 근본 내용에 속하고 클래스와 메서드를 사용자 정의한. getHtml() 같은 메서드를 주로 사용한다.

낮을수록 세부 내용에 속하고 기본 라이브러리의 메서드. append() 등을 사용한다.

 

내려가기 규칙

이야기처럼 아래로 읽게 되어야 좋은 코드이다.

한 함수 다음에는 추상화 수준이 낮은 함수가 온다.

ex) To 설정 페이지와 해제 페이지를 포함하려면, 설정, 테스트, 해제 페이지를 포함한다.(제일 높은 추상화 수준)

            To 설정 페이지를 포함하려면, 슈트이면 슈트 설정 페이지를 포함한 후 일반 설정 페이지를 포함한다.

            To 슈트 설정 페이지를 포함하려면, 부모 계층에서 "SuiteSetUp" 페이지를 찾아...

            To 부모 계층을 찾으려면....

점점 세부적인 내용으로 가는 것을 알 수 있다. (수준이 점점 낮아진다.)

라면에 비유해 보았다.

ex) To 라면을 끓이려면, 물을 끓이고 면과 수프를 넣어야 한다.

          To 물을 끓이려면, 냄비를 찾아 물을 부어야 한다.

          To 냄비를 찾으려면......

 

3. 서술적인 이름을 사용하라

함수가 하는 일을 좀 더 잘 표현할 수 있는 이름을 사용하라.

한 가지 기능만 수행하는 함수에 좋은 이름을 붙인다면 벌써 절반은 성공한 것

주석보다도 이름으로 분명하게 알게 하라

한 모듈 내에서 함수들은 같은 문구, 동사 및 명사로 된 이름을 사용해야 한다.

 

 

오늘의 코드

#8958번
def checkOX(resultOfOX):
    count = 0                     #맞은 문제를 세는 변수
    point = 0                     #맞은 문제당 1점이고 그 점수를 합산하는 변수
    for i in range(len(resultOfOX)):
        if(resultOfOX[i] == 'X'):
            count = 0
        # O가 되면 +1 X가 되면 0
        else:
            count += 1
            point += count
    return point
# 변수에 변수를 옮겨 담는 기술
# ox퀴즈의 결과 개수
result = int(input())

# ox퀴즈의 결과 문자열
for i in range(result):
    resultOfOX = input()
    print(checkOX(resultOfOX))
    
    
#4344번
# testCase C
c = int(input())
# 평균을 위한 총 합 값
for i in range(c):
    sum = 0
    count = 0
    # countOfStudent and theirPoint list
    points = list(map(int, input().split()))
    for j in range(1, len(points)):
        sum += points[j]
    # points에 첫번째 인덱스 즉 points[0]은 학생의 수
    average = sum/points[0]
    for k in range(1, len(points)):
        if(points[k] > average):
            count += 1
    print(format(count/points[0], "0.3%"))
#출력 시 퍼센트형태로 출력하고 싶다면 위의 형태대로 
#0.3은 소수점 몇 째자리까지를 뜻 함

 

오늘의 생각

애플 펜슬은 그림을 그릴 때 혹은 키보드가 없을 때 사용

키보드는 있다면 항시 사용

 

오늘은 버티는 날이다.

 

'오늘의 메모' 카테고리의 다른 글

21.02.11  (0) 2021.02.11
21.02.10  (0) 2021.02.10
21.02.08  (0) 2021.02.08
21.02.07  (0) 2021.02.08
21.02.05  (0) 2021.02.05

+ Recent posts