스파게티를 몇번 갈아엎고...(코딩할때 신경쓰면 좋을 것들 출처: 프갤)

김코비 금오 2020.07.21 조회 수 2727 추천 수 12

미를 전달할 수 있는 변수 이름을 붙이세요

: 물론 함수만들고 코드 짜는 것보다 변수 이름 짓는게 더 어렵지만 매우 중요합니다.

 

 

 

매직 넘버에는 이름을 붙여주세요

: 작은 프로그램에는 코드를 짧게 해주지만 매직넘버는 코드를 스파게티로 만듭니다.

 

 

 

복잡한 조건식은 함수화해주세요

: 개인적으로 IF문 복잡한걸 굉장히 극혐합니다. 특히 조건문 안에서 변수 선언하니까 사람들이 화내더라ㅠ

 

 

:

계산식을 함수화해서 의미를 전달하세요.

: 변수 이름만큼이나 함수이름 짓는 것도 힘들기하지만;;

 

 

 

 

사소한 중복도 티끌모아 태산이 되므로 줄여주세요.

: 테트리스를 얼마전에 만들었는데 이거 하나로 코드가 20줄 줄었습니다.

 

 

 

조기 리턴을 활용해 주세요.

: 조기리턴 예제보고 허벅지 탁 쳤던 기억이 납니다. IF문 중첩을 막아주는 역활을 합니다.

 

 

:

 

자료구조를 활용해서 if 조건문을 줄여보세요.

: 그전에 사용하는 자료구조는 공부해야하는건 아시죠?

 

 

 

 

반복문 내의 처리는 최소한으로 만들어 주세요.

: 흔히 말하는 빅O에 대한 얘기 입니다...알고리즘 극혐...

 

 

 

반목분 내부에서는 1개의 처리만 수행하세요.

: 중괄호로 묶이는 건 거의 다 이 전제가 필요한것 같네요.

 

 

 

람다식을 사용해서 반복문을 일반화하세요.

: 근데 저는 람다를 아직 잘 못써서 남발하다가 스파게티를 보게되곤 합니다.

 

 

 

case 내부는 함수화해주세요.

:IF문은 물론 case는 특히 더 간결하게!

 

 

 

1개의 함수에는 1개의 역할만 주세요

: 단순한 함수일수록 재사용하기 좋아요

 

 

 

복잡한 복합 조건은 피해주세요.

: 물론 내가 그러고 싶어서 그러는게 아니지만...따흙흙

 

 

 

자연어처럼 읽을 수 있게 코드를 작성하세요.

:물론 내가 안그러고 싶어서 안그러는게 아니지만...따흙흙

 

 

 

 

 

변수를 클래스화해서 의도를 명확하게 전달해주세요.

: 코드가 요란해보일것 같았지만 실제로 해보니 코드 가독성은 좋아지더라구요(요란해지긴함ㅋ)

 

 

 

 

getter와 setter를 되도록 사용하지 마세요.

: 솔직히 아직 getter setter 왜쓰는지 몰겠음(신윤식교수님 죄송합니다ㅠ)

 

 

 

부모 자식 관계라도 private를 사용해주세요.

: 접근제어자는 될 수 있는한 권한을 적게주는게 맞습니다.

 

 

 

 

상속보다는 이양을 우선해주세요

: 상속 극혐!!!(신윤식 교수님 죄송합니다2222)

 

()

 

 

직접적인 친구와만 놀고, 친구의 친구와는 놀지마세요.

: 물론 저는 친구가 없어서 친구의 친구도 없답니다!!!!

...는 농담이고 매개변수가 함수를 타고 또다른 함수로 넘어가는 걸 방지하라는 말같습니다. 에이씨! 굴러만 가면 되짘ㅋㅋㅋㅋㅋ이라는 마인드로 개무시하고 프로그램 설계했다가 피봤습니다.

 

 

 

 

무리하게 디자인 패턴을 적용하려 하지 말아주세요.

: 코린이인 저와 여러분에겐 이릅니다.(는 나만 그럼)

 

 

 

 

중재자를 사용해 의존 관계를 단순화하세요.

: 무척 선호하는 프로그래밍 방식입니다. 접근제어자에 되게 민감한 편인데 중재자패턴 쓰고 나니까 디게 갬성이 편해 지더라구요.

 

 

외부와의 인터페이스 부분을 클래스화하세요.

: 함수로 구현하는 것보다 더 가독성이 좋습니다.

 

 

 

 

 

 

프로그래밍 갤러리에서 인상깊게 읽었던 글들 중,

개인적으로 직접 겪은 것들에 대해서 코멘트를 한줄씩 덧붙여봤습니다.

In case I don't see ya, good afternoon, good evening, and good night

 

 

출처 : https://gall.dcinside.com/board/view/?id=programming&no=638072

 

 



 

10개의 댓글

Profile
리르 금오
2020.07.21

엄청 좋은 글 같네요!

0 0    댓글  
Profile
@리르

예전에 스크랩했던 저런 글들이 몇개 더있어요. 시간이 날때마다 하나씩 풀겠습니다.

0 0    댓글  
Profile
리르 금오
2020.07.22
@김코비

오 자주 풀어주세요 ㅎㅎ

0 0    댓글  
Profile
금오인기글 게시판으로 이동되었습니다.
0 0    댓글  
Profile
@금오사이봇

이런 별볼일 없는 게시글이...??

0 0    댓글  
Profile

getter, setter을 쓰지 않으면 변수 접근은 뭐로 하라는 말씀이신지...

1 0    댓글  
Profile
@자취를 하고 싶은 까마귀

우선 저는 절차형 프로그래밍보다는 객체지향 프로그램에 익숙한 사람이라는 것,

또한 저 역시 일개 학부생에 지나지 않는다는 점 참고해주시면 감사하겠습니다.

 

일단 getter와 setter(이하 엑세스 함수라 칭함)의 문제점부터 알려드리겠습니다.

엑세스 함수는 OOP의 철학인 캡슐화를 일부 따라가는듯하지만 실제로 완전히 캡슐화된 코딩 기법이라 할 수는 없습니다.

코드의 재사용적인 면에서는 확실히 실용적이지만 정보은닉는 많이 불리하기 때문입니다.

public으로 선언된 데이터에 직접적으로 접근하나

public으로 선언된 엑세스 함수를 이용하나 결국 둘다 추상화되었어야할 데이터를 외부로 노출시키는 문제를 발생시키기 때문입니다.

 

// 잘못된 예

 

// get과 set으로 내부 데이터 노출

 

Money abc;

 

a.setvalue( b.getvalue() + c.getvalue() );

 
 

// 잘된 예

 

// Money 객체에 일을 해달라고 요청하라.

 

Money ab;

 

a.increaseBy( b );
 

차이가 보십니까? 위의 코드는 접근제어자를 사용한 반면에 아래의 코드는 함수를 새로 만들었죠.

 

이 밖에도 유지보수에 불리하다던가 하는 이유들이 있긴했지만 그런 언급하지 않은 면들은 제가 겪은 일들이 아니라서 선뜻 적기가 어렵네요.

저 역시 액세스 함수의 편의성은 잘 알고 있지만 될 수 있으면 사용하지 않으려 노력하고있습니다.

하지만 이건 제가 단순한 OOP덕후라서 그런 것일뿐, 이렇게 극단 실제로 필요하다면 써야한다고는 생각하고 있습니다.

다만, 액세스 제어자가 명확한 단점을 가지고 있다는 사실을 인식하고 사용한다면 조금이라도 더 좋은 프로그램을 짤 수 있을거라 믿고있습니다.

 

출처 : https://kindtis.tistory.com/229 [Game Programmer Life], https://kldp.org/files/setter__getter_______________________176.pdf

0 0    댓글  
Profile
@김코비

getter, setter 가 아니라 필요한 일을 행하는 함수를 만들어 사용하는게 낫다는 말이군요.

순간 그런거 없는데 getter, setter 도 쓰지 말라는줄 알아 놀랐었습니다

1 0    댓글  
Profile
@자취를 하고 싶은 까마귀

위 댓글 하나 달려고 이것저것 찾아봤는데 아무래도 선택사항인것같아요, 하지만 무조건 getter, setter를 고집해서는 안된다는 의견이 중론입니다. 단점이 명확한 방식이니 대체할 수 있는 방법들을 염두해주시면 좋을 것같습니다!

0 0    댓글  
Profile
컴소공
2020.07.22

잘보고가요

0 0    댓글  

금오 인기글

금오인의 선택을 받은 바로 그 글!

번호 제목 글쓴이 날짜 조회 수 추천 수
공지 [완료] 금오사이 서버 점검 관련 공지 1 profile 금오사이 2023.01.06 1956 6
공지 2022 EVENT) 다시 돌아온 빼빼로데이!! 금오공대에 숨겨진 빼빼로를 찾아라 7 profile 금오사이 2022.11.10 1273 12
공지 2022년도 2학기 금오사이 팀원모집 5 profile 금오사이 2022.08.25 1691 7
공지 📢"2022 대동제 축제 후기 이벤트" 당첨자 발표 2 profile 금오사이 2022.06.05 3738 5
공지 금오사이 운영팀 신년 인사 2 profile 커뮤니티운영팀 2022.01.01 1227 9
공지 ❤종강 기념❤ 수강후기 이벤트! 5 profile 커뮤니티운영팀 2021.12.23 1210 7
공지 2021 EVENT) 빼빼로데이 보물찾기! 5 profile 커뮤니티운영팀 2021.11.11 2353 11
공지 2021 EVENT) 의좋은 형제 & 의상한 형제를 찾습니다! 2 profile 커뮤니티운영팀 2021.05.12 3312 10
공지 신년 새해 인사입니다! 6 profile 금오사이 2021.01.01 2596 25
공지 ❤️종강 기념! 수강후기 이벤트~!❤️ 9 profile 커뮤니티운영팀 2020.07.05 4178 22
공지 금하! 예비금오인들 모여라 1 profile 커뮤니티운영팀 2019.08.28 2200 8
공지 금오위키의 활성화를 도와주세요! 4 profile 금오사이 2018.09.22 3059 8
211 딸기청우유 부스 10 필기하는 까마귀 2020.11.26 2816 12
210 지금 왕성교회 코로나 8 알콜이 부족한 까마귀 2020.06.27 2815 8
209 금잠녀? 11 오만방자한 까마귀 2020.05.19 2804 13
208 with us 동아리 홍보입니다! 1 withus 2020.03.08 2794 10
207 현재 내 상황 3 자취를 하고 싶은 까마귀 2020.04.25 2794 13
206 오름3동 짝수층 엘베 앞에 누가 카레같은거 뿌려놨는지는 모르겠는데 7 즐거운 까마귀 2020.09.18 2780 15
205 컴공 면접 후기 5 c3110cy 2019.11.02 2749 10
204 한국은... 9 지니 2020.01.24 2748 14
203 오발송된 메시지에 대한 안내 4 profile 금오사이운영팀 2020.02.26 2747 8
202 국제교류원 ㅋㅋㅋㅋ 14 안보이는 까마귀 2020.05.13 2738 8
201 수학 못해서 힘들당 31 말이 많은 까마귀 2020.04.28 2736 10
200 안녕하세요 밴드동아리 페이즈입니다!! 5 재수강하는 까마귀 2020.06.11 2731 13
199 홀수년생 분들 건강검진 받으러 갑시다~!~! 5 집밥이 그리운 까마귀 2021.04.13 2730 12
스파게티를 몇번 갈아엎고...(코딩할때 신경쓰면 좋을 것들 출처: 프갤) 10 profile 김코비 2020.07.21 2727 12
197 총학 자아분열 미쳤네 30 기뻐하는 까마귀 2020.06.10 2723 34
196 이 금오사이앱은 10 행복한 까마귀 2021.01.04 2720 8
195 기숙사 세탁기 먼지 안묻게 쓰는 방법! (개꿀팁!) 10 겟커쓰 2018.09.02 2707 23
194 안녕 금오공대 기숙사! 2 만족한 까마귀 2020.12.25 2706 18
193 대면수업 쌉불가능 42 profile 리르 2020.08.15 2703 11
192 비대면했을 때의 일상 6 걱정하는 까마귀 2020.09.09 2702 32
서버에 요청 중입니다. 잠시만 기다려 주십시오...