여기서는 세가지 문제가 있다.
이 세개는 현재 일을 하면서도 느끼고 있는 부분이었다. 변수를 자기 자신만 알아볼 수 있게 설정을 해놔서 기존 소스코드를 해석하는데 꽤나 애를 먹어서 이 부분은 정말 직접적으로 많이 와닿았다.
불필요한 임시변수들을 제거하는 것이다.
예를 들면..
public int search(){
int result = list.get(0);
int searchValue = result;
return searchValue;
}
이런 경우에 있어서 result 변수는 필요가 없다. 명확성에 도움을 주지 않을 뿐더러 애초에 searchValue
라는 변수에 list.get(0)
를 할당하면 됐다. 이런 경우에는 result
변수를 개발자가 나중에 어디서 쓰일 것이라고 예상했을 때 남았을 경우인데 실제로 안쓴 경우에 이런 소스코드가 남을 수 있다.
메소드 안에서여도 메소드의 가장 최상단에서 변수를 줘서 중간결과 값을 대입 시켜주는 것이 아니라
사이 로직에서만 쓰이고 사용하지 않는다면 for문이나 if문안에서 변수를 할당하여 사용하는 것이 바람직하다.
전역에서 boolean 변수를 기본값을 false로 주고서 validation검사를 할 경우에 흐름제어 변수를 사용했었는데, 이러한 흐름 제어 변수는 프로그램의 구조를 잘 설계하여 제거해보도록 하자❗️
전역 변수도 실무에서 정말 많이도 할당한 것을 보았다. 이것을 고치기에는 역부족이었고 소스코드를 전부 바꿔야 하는 상황인것을 알았다.... 바꾸고 싶은데 어쩌겠는가 어디까지 전역변수가 잡혀있는지 감을 잡을 수가 없었다. 그리고 전역변수 뿐만 아니라 모든 변수의 범위를 좁히는 일
은 언제나 옳다.
변수의 범위를 축소시킨다면 코드를 읽는 사람이 봤을 때 줄인 만큼의 블록 범위 내에서만의 변수를 신경쓰므로 읽어야 하는 변수도 줄어들게 될 것이다. 그렇게 되면 코드를 이해하는데에 더 시간이 단축될 것이다.
많은 메소드를 정적(static)으로 클래스 멤버 접근을 제한하게 되면, 읽는 사람에게 이 코드는 저 변수들로부터 독립적이라는 사실을 알려줄 수 있다.
커다란 클래스를 여러 작은 클래스로 나누는 방법도 존재한다. 이것은 작은 클래스들이 서로 독립적일 때 유용하다. 작은 클래스로 나누었지만 서로의 멤버를 참조하고 있다면 아무것도 하지 않은 것이 된다.
중략... 이부분은 C++, 파이썬, 자바스크립트에 해당하는 내용이 있었다. 이 포스팅에서는 다루지 않겠다.
상수는 코드를 읽는 사람에게 다른 추가적인 생각을 요구하지 않는다. 그래서 자바에서는 final사용을 권장한다.
변수값이 달라지는 곳이 많을수록 현재값을 추측하기 더 어려워진다.
되도록이면 변수를 선언할 때는 그 변수에 값을 여러번 담았다가 바꿨다가 하는 것이 좋지 않다. 그래서 뭔가 동적으로 변수값이 변해야 한다면 그 변해야 하는 부분에 맞춰서 변수를 선언해서 사용하자. 반복문이 끝나면서도 변수에 여러 값을 할당해서 헷갈리는 로직을 작성하는 것은 안하는게 좋을 것 같다.
벌써 9장까지 읽었다. 여러가지 알고리즘이며 내 미니 프로젝트며 준비하면서 동시에 읽으려고 하다보니 최소 하루에 1장은 읽으려고 열심히 노력중인데 잘 지켜지고 있는 것 같다. 이로써 2부가 끝난셈이고 내일부터는 3부 10장에 들어가게 된다. 9장까지 읽은 나는 새로 코드를 짬에 있어서 이런저런 생각들, 그리고 더 나아가서는 남이 봤을때 어떤 코드가 좋을까? 하면서 짜게 되는 것이 새삼 신기하게 느껴진다.
이 책을 읽고 나서 깔끔하게 코드짜는 습관을 잘 배양하고 더 나아가서 지금 이책은 여러 언어가 쓰여있어서 조금 이해되지 않는 부분도 있지만 클린코드를 한번 구매해서 다시 상기시키는 느낌으로 읽으면 가독성 좋은 코드를 뽑아낼 수 있을 것 같다😄
코드리뷰 있고 개발 문화가 좋은 회사 그리고 좋은 개발자들을 만나고 싶다!!!