개발교양도서 12

코드 청킹 연습하기(1)

코드 청킹 연습 코드 신속하게 읽는 방법 - 청크(Chunk) 코드를 신속하게 읽는데 어려움을 느끼는 이유는 '생소'하기 때문이다. 생소한 코드는 장기기억이 아닌 단기기억에 기억되는데, 이런 단기기억공간을 두고 lordofkangs.tistory.com 위 포스팅을 토대로 청킹연습을 해보려고 한다. 코드베이스 def sequential_search(n, target, array) : for i in range(n) if array[i] == target: return i + 1 input_data = input().split() n = int(input_data[0]) target = input_data[1] array = input().split() print(sequential_search(n,tar..

코드 청킹 연습

코드 신속하게 읽는 방법 - 청크(Chunk) 코드를 신속하게 읽는데 어려움을 느끼는 이유는 '생소'하기 때문이다. 생소한 코드는 장기기억이 아닌 단기기억에 기억되는데, 이런 단기기억공간을 두고 STM(Short-Term Memory)이라 부른다. STM은 lordofkangs.tistory.com 지난 포스팅에서는 코드를 신속하게 읽기 위한 방법으로 청크(Chunk)에 대해서 알아보았다. 많은 사람이 코드를 많이 작성해보는 것으로 프로그래밍을 학습하지만 효과적인 방법이 아닐 수 있다. 개발자는 실제로 코드를 작성하는 것보다 보는 경우가 더 많다. 그러므로 코드를 청킹하여 신속하게 파악하는 방법을 의도적으로 연습할 필요가 있다. 1. 코드선정 과거에 작성했던 코드를 하나 선택한다. ( 잘 아는 코드여도 ..

코드 표식 파악 연습

코드 신속하게 읽는 방법 - 청크(Chunk) 코드를 신속하게 읽는데 어려움을 느끼는 이유는 '생소'하기 때문이다. 생소한 코드는 장기기억이 아닌 단기기억에 기억되는데, 이런 단기기억공간을 두고 STM(Short-Term Memory)이라 부른다. STM은 lordofkangs.tistory.com 지난 포스팅에서 코드를 신속하게 읽기 위한 방법 에 대해서 알아 보았다. 이번 포스팅에서는 표식(Beacon) 파악 연습에 대해서 다루어보겠다. 표식(Beacon) 숙련된 개발자는 코드를 읽고 이해할 때 표식을 많이 이용하지만 초급 개발자는 그렇지 않다. 표식파악연습이란, 변수명, 주석, 메소드명에서 힌트를 얻어 코드가 어떤 기능을하는지를 파악하는 연습이다. def print_in_order(root): if..

코드 신속하게 읽는 방법 - 청크(Chunk)

코드를 신속하게 읽는데 어려움을 느끼는 이유는 '생소'하기 때문이다. 생소한 코드는 장기기억이 아닌 단기기억에 기억되는데, 이런 단기기억공간을 두고 STM(Short-Term Memory)이라 부른다. STM은 용량에 제한이 있다. 코드에 혼란을 느끼는 이유(2) 코드에 혼란을 느끼는 이유(1) 코드를 보다보면 혼란에 빠질 때가 있다. 개발자가 코드를 보며 혼란에 빠지는 경우는 3가지이다. 1. 지식의 부족 2. 정보의 부족 3. 처리능력의 부족 지식의 부족 2 2 lordofkangs.tistory.com ( STM의 자세한 내용은 위 포스팅 참고바랍니다. ) 우리가 생소한 코드를 볼 때, 단기로 기억할 수 있는 데이터의 양과 시간은 정해져있다. 컴퓨터도 단기기억장치인 RAM의 용량에 따라 컴퓨터의 처..

코드에 혼란을 느끼는 이유(2)

코드에 혼란을 느끼는 이유(1) 코드를 보다보면 혼란에 빠질 때가 있다. 개발자가 코드를 보며 혼란에 빠지는 경우는 3가지이다. 1. 지식의 부족 2. 정보의 부족 3. 처리능력의 부족 지식의 부족 2 2 2 2 2 T n 여기서 T가 무엇을 의 lordofkangs.tistory.com 지난 포스팅에서 개발자가 코드를 보며 혼란을 느끼는 이유 3가지를 정리했다. 1. 지식의 부족 2. 정보의 부족 3. 처리능력의 부족 이번 포스팅에서는 3가지 원인을 사람의 인지과정을 통해서 정리해보려고 한다. 사람의 인지과정 사람의 기억은 장기기억과 단기기억이 있는데 새로운 데이터는 단기기억에 저장된다. 단기기억은 임시로 저장되는 공간으로 저장공간이 적어 RAM과 같다. 반복되는 단기기억은 데이터가 아닌 정보가 되어 ..

코드에 혼란을 느끼는 이유(1)

코드를 보다보면 혼란에 빠질 때가 있다. 개발자가 코드를 보며 혼란에 빠지는 경우는 3가지이다. 1. 지식의 부족 2. 정보의 부족 3. 처리능력의 부족 지식의 부족 2 2 2 2 2 T n 여기서 T가 무엇을 의미하는지 아는가? 해당 언어의 '지식'이 있는 사람이라면 쉽게 대답할 수 있겠지만 '지식'이 없는 사람이라면 대답 할 수 없다. 이처럼 코딩 중 어려움을 겪는 첫 번째 이유는 '지식'이 없어서이다. 정보의 부족 public class BinaryCalculator{ public static void main (Integer n){ System.out.println(Integer.toBinaryString(n)); // Integer.toBinaryString(n) ? } } JAVA 문법의 '지..

[클린코드] 명령과 조회를 분리하라

함수는 두 가지 중 하나이다. 1. 명령 2. 조회 '명령'은 특정 행위(do)를 한다. '조회'는 특정 상태(state)를 조회한다. 그러므로 함수는 명령과 조회가 같이 있으면 안된다. 예를 들어, public boolean set(String userName, String password); 언뜻 보면 set 함수는 userName과 passWord를 받아 회원정보를 설정(do)하는 함수 인 것 같다. ( 명령함수) 그러나 Return 값을 보면 boolean이다. False나 True는 조회가 되었는지 여부를 리턴할때 쓰는 자료형이다. 즉, 명령과 조회가 혼합된 함수이다. 이런 함수는 혼란을 일으킨다. 고로 함수를 분리해주어야 가독성이 올라간다. if(attributeExists("userName"..

[클린코드] 매개변수의 개수

Clean Code 『CLEAN CODE(클린 코드)』은 오브젝트 멘토(OBJECT MENTOR)의 동료들과 힘을 모아 ‘개발하며’ 클린 코드를 만드는 최상의 애자일 기법을 소개하고 있다. 소프트웨어 장인 정신의 가치를 심어 주며 book.naver.com 가장 이상적인 함수의 매개변수 개수는 몇 개일까? 답은 '0'개이다. 만약 매개변수를 1개, 2개, 3개로 늘리려면 '어쩔 수 없는 특별한 이유'가 필요하다. 함수는 X(매개변수)를 받아 처리(f)하고 Y(결과)를 반환(return)한다. 매개변수가 많아질수록 다양한 경우의 수가 발생한다. 매개변수의 증가는 함수를 검증하고 테스트하는데 복잡도를 증가시킨다. 그러므로 매개변수는 최대한 줄이는 것이 옳다. 그럼 로버트 C. 마틴이 말하는 어쩔 수 없는 특..

[클린코드] 출력인수를 가급적 피하라 ( this의 존재 이유 )

Clean Code 『CLEAN CODE(클린 코드)』은 오브젝트 멘토(OBJECT MENTOR)의 동료들과 힘을 모아 ‘개발하며’ 클린 코드를 만드는 최상의 애자일 기법을 소개하고 있다. 소프트웨어 장인 정신의 가치를 심어 주며 book.naver.com 함수는 매개변수를 갖는다. 매개변수로 들어 온 값을 '인수'라고 한다. 인수에는 두 가지가 있다. 1. 입력인수 2. 출력인수 함수는 특정 목적에 맞게 인수를 '처리'해야 한다. 인수는 처리대상이 된다. boolean fileExists("Myfile"){ // 생략... } 위 함수는 Myfile이라는 이름을 가진 파일이 존재하는지 조회하는 함수이다. 매개변수에 조회하고 싶은 대상을 인수로 입력해야한다. 이 때의 인수를 '입력인수'라고 한다. pub..

[클린코드] switch문 사용법 : 제어의 역전

Clean Code 『CLEAN CODE(클린 코드)』은 오브젝트 멘토(OBJECT MENTOR)의 동료들과 힘을 모아 ‘개발하며’ 클린 코드를 만드는 최상의 애자일 기법을 소개하고 있다. 소프트웨어 장인 정신의 가치를 심어 주며 book.naver.com switch문은 클린코드에 부적합하다. 이유는 크게 두 가지이다. 1. 여러가지 case가 있어 한 가지 함수에 다양한 작업이 포함될 수 있다. 2. 작게 만들 수 없다. 함수는 작고 한 가지 작업만 수행되어야 한다고 믿는 로버튼 C. 마틴에게 swith문은 부적합한 문법이다. 사용하기 어려운 switch문 // 월급 계산법 public Employee caculatePay(Employee e) { switch(e.type) { case COMMISS..