1. 암기강요를 안해야함
name space 를 어떻게 최소화하는가가 관건
6년 뒤의 내가 봐도 헷갈릴 정도면 문제가 있음.
과거의 나도 미래의 나도 사실상 타인임.
2. 재사용성이 좋아야함
물론 reusability 따위 다시 짤 수 없는 녀석들이나 떠드는 거라 하는 사람도 있고
money code 들은 의외로 그닥 재사용되지 않음.
따라서 어느정도는 자기만족이고, 노후 보장인데 이것도 cache 정책이랑 닿아있는 이야기임
'미래는 알 수 없다'가 통한단 말임.
적어도 자기가 짠 코드가 자기 코드들 안에서 유기적으로 재사용되어야 수정포인트가 줄어드는 부분은 있지.
이것도 결국 암기강요 이야기와 완전히 독립되진 않음.
3. 코드가 눈으로 보기에 깨끗해야함
대문자 난립한 코드는 시끄럽게 떠드는 코드들과 같음.
시선을 뺏는단 말이지.
snake 해라 snake
들여쓰기랑 탭, 괄호안에 띄우는것도 자기눈에 편안하게 맞추면 됨.
미적취향이 괴랄한 분들도 있는데...
4. 지나친 최적화는 독임
꼭 고성능이 필요하면 시궁창은 모듈로 분할해야됨
5. 길면 망함
하나의 모듈이 1000라인을 넘어가면 죄악임
하나의 함수가 30줄을 넘어가면 죄책감을 느껴야됨
한 눈에 보이게 짜야됨
블럭은 곧 anonymous function 이다.
이름이 필요없는 경우와 이름을 줘야되는 경우를 반대로 가는 사람들 많음.
6. 빌드가 귀찮으면 안됨
header only 좋다 이거야
7. 주석이 많으면 안됨
코드로 말하고, 어지간하면 따로 빼라 이거야
8. 다시 말하지만 줄이고 줄여야됨
구조가 비슷한 코드는 가능하면 합쳐라.
만들어 놓고 안쓰는 코드들은 다 따로 빼놨다가 좀 지워라.
7번 개추ㅇㅅㅇ
와.. ......센세 추천 드리고 갑니다..
공감ㅇㅅㅇ
추천 드렸구여
snake는 구글에서 쓴다고 하던데.. java는 snake안 쓰고 카멜 케이스가 이겼음
내가 원래 Pascal 이랑 Camel만 쓰다가 snake로 전향하고 나서 삶이 엘레강스해짐
지나친 최적화 이건 애초에 코드 짤 떄 널널하게 잡고, 유지보수할때만 잠시 빡세게 잡고, 서버 환경 바꿀 떄는 널널하게 잡은거 사용하면 되는거 아님?
꼭 웹 개발 이런 얘기가 아니라 C++이나 이런 기술도 당장 바꿀일 없고 유지체제로 갈꺼면 지나치게 해도 될 거 같은데 ㅇㅅㅇ
궁극의 최적화를 가면 사실 템플릿 도배되기 일수고 코드가 팍팍 늘어나. 근데 오히려 여러 플랫폼에서 무난하게 동작하는 장수코드들은 간결한 편이지.
lowlevel backend 는 별도로 수용생활 시켜야됨. 그것때문에 길어지고 복잡해지는 소스코드 스크롤하는것도 다 비용낭비거든.
만약 뭐 내가 만든 이미지 프로세싱 필터가 한번 돌리는데 몇 초가 걸린다 이정도면, 테스트 시간을 줄이기 위해서라도 어느정도 성능을 끌어올려야 되는 경우가 있긴한데, 최상의 성능을 원한다고 거기서 한 걸음 더 나가면 그때부터 코드의 무결성이 초토화됨
즉 아무리 개념코드에 비해 성능이 몇 배 빠른 최적화 코드가 있다 하더라도 두 가지 코드를 유지해야하고, 각각 분리된 모듈에 수용시키는게 맞다는거지.
개념 코드는 그 자체로 도큐먼트가 되거든.
이해를 잘 못했는데 님이 하는 말은 1. 당연히 최적화하더라도 기존에 널널하게 유지보수 편하게 만들어두었던 코드는 가지고 있어야 한다 2.최적화 된 코드가 있으면 최적화 해서 쓰길 원하면 모듈화 해서 갖다 쓰라 이말임?
사실 성능이 진짜 필요한 cpp 개발자가 성능 보다는 유지보수가 오히려 더 중요하다고 하니까 성능에 대한 제 생각이 기존에도 큰 의미없다고 느껴졌지만, 님 말을 듣고 더욱 심해짐
최적화 실력은 내 몸값을 높여주고 내 시간을 벌어주긴하는데, 최적화에 너무 올인하면 느린 코드는 코드로 보이지도 않음. 그럴때 문제가 발생하는거지.
native code 들은 특정 환경에 쥐어짜서 최적화 해야되는 경우가 많아서 플랫폼만 바뀌면 아예 못쓸물건이 되어버리니, 뭐 고인물 장인 할게 아니면 보편적이고 개념이 잘 전달되는 small code 들이 좋다는거지. 같은 값이면 다홍치마라고 같은값이면 짧은 코드가 클린 코드다.
멀티 스레딩 기법 쓰면서 모듈화 쓰는게 있는데 내부 코드가 너무 더러울 것 같아서 쓰지 말까 하는게 있었는데 안 쓰는게 맞을듯 ㄱㅅㄱㅅ
이사람오랜만에봅니다
오랜만에 오셨네 이형님
라인 줄이란답시고 문단 개행까지 없애거나 한줄에 다 때려넣는 바보는 없길 바라며... 그런거 다 넣고도 30줄 안넘게 짜는게 잘 짜는거임.
암기강요를 하지 않기 위해선 직관적인 명칭과 파라메터, 및 클래싱이 무척 중요하죠. 쓰기 편한것도 중요하고. 반대파들도 있지만 난 singleton이나 property 매우 애용함.
감사합니다 형님 - dc App
오~ 오랜만~
야
https://gall.dcinside.com/board/view/?id=khu&no=440925&exception_mode=recommend&page=1
비추 5개는 어떤 ㅇㅋ같은 놈이 다중이 돌림? - dc App
1, 2, 4, 6, 7, 8번은 대체로 동의함. 그런데 3, 5번은 제목이 틀렸다고 느끼진 않음. 다만 내용에서 좀 더 관대하게 허용해도 될 범위인 것 같은데 좁게 한정한 느낌이 있는듯... ㅇㅅㅇ snake나 kebab은 단어구분이 명확하다는 장점이 있지만, 식별자 길이가 길어진다는 점도 있어서 식별자 범주에 따라 달리 써도 무방한 것 같음. 코드블럭 단위별 라인 개수도 해당 코드가 작성되는 맥락에 따라서 융통성이 발휘될 수 있는 영역인듯
ㅋㅋ snake 는 다소 정치적 주장임. tab 이냐 space 냐 처럼 말이지. 사용하는 API나 SDK 가 camel 이면 코드 일관성 차원에서도 전부 래핑하지 않는 이상 좀 애매하지. 선택의 여지가 있는 친구들은 snake 를 쓰란거지. 나도 snake 를 그대로 쓰진 않음. 예를들어 class type 은 대문자를 쓰지. 그러면 SOME some; 처럼 다른 단어 생각하느라 고민안해도 되거든. type 인용이 자주 쓰여서 눈길을 어지럽히지도 않으니 말이지.
개추!
식별자 길이의 문제는 다른방법으로도 풀때 더 효과적임. open_scanner 보다 scanner.open 처럼 객체화 한다든지( 이 경우는 길이가 같지만 인스턴스명은 선택의 여지가 있음 ), parameter 로 구별이 되게 다형성을 써서 namespace 를 묶어준다든지 말이지. 즉 굳이 긴 네이밍을 사용한다면 필수불가결해야하는 수준인거고 띄어 쓰기 한 두개 줄인다고 별 이득은 없다는 것.
함수의 길이와 모듈의 라인수는 짧게 짜버릇하면 굉장히 좋은 습관들이 생기기 때문에 꼭 해볼 것을 추천. 솔직히 인터넷에서 헤더파일 하나에 2~3만라인 때려놓은 애들 보면 한대 쥐어박고 싶음.
그건 견출지나 옆면 목차없는 영어사전과 같은 짓인거거든.
나는 C/C++ 에서 허구헌날 return 치는 것 보다 #define ret return 쓰는게 여러모로 들여쓰기 문제나 노가다를 줄여준다고 생각. 그렇다고 이런 sugar 가 너무 많으면 그것도 암기 강요가 되니 자기 취향에 맞게 뿌려주면 코딩이 한결 편하지.
동의함. ㅇㅅㅇ 저도 각각의 소스 컨테이너(.. 공식적인 이름은 모르겠지만 패키지나 모듈이라 불리는 파일시스템 상의 디렉토리/폴더, 파일, 클래스, 함수 등등) 이 단일 책임의 원칙에 가깝게 작성될 수록 이상적이라고 생각함 ㅇㅅㅇ
ㅇㅇ 눈을 코드로부터 최대한 자유롭게 만들어줘야 뇌의 잉여 프로세싱 자원을 문제를 푸는데 집중하게 할 수 있지. 그래서 유연하지만 일관성 있는 코딩 스타일이 필요한거고
ㄹㅇ 뇌의 여유공간 표현 진짜 공감됨. 사람 두뇌도 유한자원인데 무한한 존재로 가정하는 느낌을 주는 곳이 많은듯. ㅇㅅㅇ
근왜주?
https://gall.dcinside.com/board/view?id=programming&no=748153
주석말고주작
뭐가 주작임?
주작아님 내가 개추함 - dc Cpp
주작아님. 내가 개추줌
5번 저렇게하면 코드리뷰할때 어떡함? 함수 다 뒤져야댐? 난 게임이라 오버헤드때문에 저렇게 못해봐서 후기좀 - dc App
https://gall.dcinside.com/board/view/?id=programming&no=2203849
코린인데 6번 반대로 빌드가 어려운 경우가 있나영
종속성 주렁주렁 걸린 라이브러리들 많잖아. vcpkg 정도면 양호한편이지만 cmake 설정 안맞는 문제, 버전문제, dll 지옥 문제, 경로문제 등등
코세 어서오고
5같은경우 로직따라 어쩔수없는케이스 말고는 진짜 흐름파악하는데 도움된다고 생각함. ㅋㅋ 시간에쫒기면 이걸 못지키게되는데 그럼 진짜 코드량만 더럽게많아지고 이해도잘안감. SI가 그래..
다 아는 내용
어? 어디서 많이 본내용이다 햇더니만 코세였구만?
이거랑 상반되는 주장 하는 사람들도 꽤 많은듯.
특히, 주석이 적어야 된다. 혹은 없어야 된다. 코드로 말해야 한다. 이거는 사실상 불가능하다고 말하는 사람들도 있더라. 그리고 아무리 좋은 코드를 짜도 주석이 없으면 이해하기 힘든 경우도 있다고 하고.
함수 얘기도, 굳이 기능마다 함수 하나? 함수마다 책임 하나? 이거에 반대하는 사람도 있음.
상황에 따라 다른 것도 좀 있지만 좋은 글인데 왜케 비추가 많냐
탭수가 적어야됨 클린코드 보면 탭수 많은 코드 없음 ㅇㄱㄹㅇ
말은 누가 못함
이런 개소리를 거르는게 제일 중요함 오만가지 코드규칙 정해놓는데 정작 그거 정한놈도 지가 실천을 못함 결국 "코드꾸밈" 질만 하다가 시간 다보냄
네 다음 국비
ㄴ 니같은줄 아노
연봉 얼마임
크린코드 요약 잘햇노
형.. 예전에는 많이 고마웠어요.
지금은 엑싯하고 잘지내고있어요..
기억이 흐려서 정확히는 모르겠지만 전에 어떤 오해를 하셨던걸로 기억해요. 그건 사실이 아닙니다.
형도 건강하세요.