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

김코비 금오 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 1959 6
공지 2022 EVENT) 다시 돌아온 빼빼로데이!! 금오공대에 숨겨진 빼빼로를 찾아라 7 profile 금오사이 2022.11.10 1275 12
공지 2022년도 2학기 금오사이 팀원모집 5 profile 금오사이 2022.08.25 1692 7
공지 📢"2022 대동제 축제 후기 이벤트" 당첨자 발표 2 profile 금오사이 2022.06.05 3739 5
공지 금오사이 운영팀 신년 인사 2 profile 커뮤니티운영팀 2022.01.01 1228 9
공지 ❤종강 기념❤ 수강후기 이벤트! 5 profile 커뮤니티운영팀 2021.12.23 1211 7
공지 2021 EVENT) 빼빼로데이 보물찾기! 5 profile 커뮤니티운영팀 2021.11.11 2354 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
291 오름 1동 사시는 분들 꼭 봐주세요.(공유좀 해줘요) 10 궁금한 까마귀 2020.09.23 3395 17
290 금오공대 유튜브 4 화난 까마귀 2020.04.20 3390 22
289 터짐ㅇ 9 버스를 놓친 까마귀 2021.01.05 3357 8
288 2021학년도 입학식 안내 4 profile 댕댕Yee 2021.02.19 3355 11
287 1학년이 학교도 못 와보고 18 평화로운 까마귀 2020.04.19 3340 23
286 교내성적장학금에 반영되는 외국어성적 대한 참고사항 2 profile 댕댕Yee 2020.05.04 3317 13
285 수강신청 참고사항(재학생편) 8 profile 댕댕yee 2020.02.11 3312 10
284 새해맞이 구미버스 시간표(21.01.01) 4 profile 댕댕Yee 2021.01.01 3282 19
283 금린이를 위한 구미버스개론2 16 profile 나나치 2019.01.18 3270 10
282 배그 공중존버 하는법 6 파돈에 미친 까마귀 2020.03.02 3267 6
281 금잠녀 23 부끄러워 하는 까마귀 2020.05.12 3263 33
280 비싼 브랜드들! 언제 사면 좋을까? 13 profile 기공아싸 2019.03.18 3260 12
279 KIT 쉐어링 서버 오픈 (기프티콘 증정) 3 지루한 까마귀 2021.06.01 3250 13
278 연기 할꺼면 빨리 공지를 내라 6 까마귀 2020.04.04 3247 8
277 이번에 이사하면서 알게된것들 적어봅니다. 5 doorian 2020.07.05 3243 23
276 이번에 kit 인재전형 1차 합격 발표를 해서 면접을 도와드릴려고 합니다!! 4 노는까마귀 2020.11.17 3219 10
275 교양신청관련 참고사항 5 profile 댕댕yee 2020.01.28 3212 12
274 오름1동 이거 뭐냐 드라큘라방이냐? 17 profile 리르 2020.09.12 3209 8
273 걸러야하는 구미시내버스에 대해 araboja.TMI 16 디지털관종 2019.03.15 3206 24
272 구미버스 시간표(20.05.25) 16 profile 댕댕Yee 2020.06.10 3201 23
서버에 요청 중입니다. 잠시만 기다려 주십시오...