00코지00
22
2022-05-07 02:00:44
11
1632

잘 짠 코드란 무슨 의미인가요


남이 보기 쉬운 코드가 잘 만든 코드다 <- 추상적인 말이라 이해가 잘 안 되네요

수준 높은 문법/함수? 주석? 

간단하게 1*5로 표시할 수 있는 것을 1+1+1+1+1 로 만드는 거?

최대한 짧고 간결하게?


15년차 개발자가 대리급 개발자 코드를 보면 드는 생각이 뭘까요?

0
  • 댓글 11

  • 레인3
    1k
    2022-05-07 02:39:22 작성 2022-05-07 02:39:48 수정됨

    유지보수가 수월하냐가 중요하죠. 

    다중 loop 금지 

    다중 if 금지

    긴 메소드=펑션 금지

    중복 금지

    등등

  • fender
    26k
    2022-05-07 05:44:31

    기능적으로 동일하다는 전제로, "잘 짠 코드"는 보통 유지보수하기 쉽게 작성한 소스를 의미합니다.

    좀 더 풀어서 설명하면, 구조를 쉽게 이해할 수 있고 코드를 직관적으로 읽을 수 있으며, 무엇보다 변경이 쉬워야 한다는 뜻입니다.

    또한, 변경이 쉽다는 것은 한 편으로는 처음 계획하지 않았던 기능을 쉽게 확장해서 추가할 수 있어야 한다는 것이고, 다른 한 편으로 어떤 특정 측면의 기능을 변경할 때 상관없는 다른 코드에 영향을 받지 않도록 모듈 간에 불필요한 결합이 없는 상태를 말합니다.

    여기까지가 일반적인 의미이고, 개인적으로는 해당 언어와 이를 사용하는 개발자 커뮤니티에서 통용되는 표준적인 관행을 잘 따르는 코드라는 조건을 덧붙이고 싶습니다.

  • 팬더재즈Bass
    1k
    2022-05-07 08:14:24

    자기스타일, 기교에 취해(?) 짠 코드들 정말 어려워요.

    개발표준안 있음에도 꼭 몆몇은 자기스타일대로 가더군요.

    추후 이분들 코드는 복불복이될 가능성이높다고 봅니다.



  • ambp
    255
    2022-05-07 08:44:53

    경력이 많다고 코드를 깔끔하게 잘 짜는 건 아닌 거 같아요.

  • 시인들
    1k
    2022-05-07 09:12:11

    예전에 대기업에 부장님 소스 받아다 리팩토링한 적이 있는데 기능은 한개도 안되고 흐름도 거지같아성 새로 다시짠 기억이 있네욘 아 그 때 너무 충격이였지 그러고는 정치질하는 꼬라지 보고 암걸릴뻔 경력 많다고 잘짜는 건 절 때 아니에욘

    제 기준에서 잘짠다는 문법이 깔끔하고 퍼포먼스가 잘나오며 확장성있고 테스트를 많이한 코드입니당.

    남이보기 쉬운 코드라기보단 남들이 보고 깔끔하다 느끼는 코드가 잘 짠코드 입니당 ㅎㅅ ㅎ

  • 하마
    8k
    2022-05-07 09:26:21 작성 2022-05-07 21:01:50 수정됨

    잘 짜여진 코드에 대한 기준에는 약간의 주관적 요소도 있음을 알아두시구요. 아는 만큼 보이며 아는게 많아도 상호간 상황에 따라 서로 다르게 판단 할 수도 있습니다.


    제가 느끼는 잘 짜여진 코드라 함은 아래와 같습니다.


    1. 변경이 쉽다. 

    ㅡ 변경함에 있어서 해당요소의 경계가 명확하다.

    ㅡ 변경함에 있어서 주변소스의 변경은 제로화한다. 


    2. 반복이 없다

    ㅡ 반복되는 부분을 하나로 만든다.


    3. 이름짓기를 잘한다.

    ㅡ 추상층이 높아 질 수록 보편적으로 사용하는 키워드를 사용하며, 가급적 GoF패턴의 명칭들은 그 의도와 비슷한 경우에만 사용. (자바쪽에 특히 오용된것들이 많습니다 )


    4. 해당언어의 이디엄과 추구하는 방향에 맞춰 코딩한다.

    ㅡ 예를들어 자바 코드짜는데 C처럼 짜면안되겠죠. 마찬가지로 코틀린 코드 짜는데 자바처럼 짜면 후지다라는 느낌이 듭니다.


    5. 팀이 정한 컨벤션에 일치한다.

    ㅡ 예외처리(가까이서 처리? 멀리서 처리? 등)나 로깅의 경우 답이 없기 때문에 일치화가 중요

    ㅡ 탭사용규정,줄바꿈규정 등등


    6. 바퀴를 재발명하지 않는다.

    ㅡ 이미 잘 짜여진 기술이 있고, 변경 필요가 없다면 있는것을 사용해서 의사소통 비용줄임. 예를 들어 JVM에서 프록시 패턴을 굳이 스스로 만들기 보단 다이나믹 프록시 사용. 스프링지원기술들 사용

    물론 발명할 필요성은 추후에 검토 합니다. C++의 STL이나 자바의 컬렉션이나 보편적 성능일뿐이지 특정상황에선 엄청느리니까요


    7. 후임자가 큰 실수 할 여지를 줄인다

    ㅡ 제약 상황을 많이 만들어 넣어서 후임자가  잘못하면 가급적 컴파일 타이밍에 에러를 내게 합니다.

    8.추상화가 잘 된 코드 (오버엔지니어링 이슈가 있음)


    9.잘 알려진 패턴이 잘 적용된 코드


    10. 시대흐름에 맞는 코드 

    ㅡ 모던C++, 모던자바


    11.테스트 친화적 코드




    이런것들이 잘 녹여진 코드를 보면 감동이 있죠.


  • pooq
    10k
    2022-05-07 11:33:08

    직관성 + 확장성 + 유지보수성

  • 꿈코더
    229
    2022-05-07 13:50:53

    변수나 함수 이름이 직관적이고 특정 기능은 분리해서 이름만 봐도 내부 코드는 볼필요없이 작성하는 것?

  • 하두
    13k
    2022-05-07 14:03:39

    깔끔하게 짜도 알아주는것 같지도 않아요 ㅋ

  • 앤트울프
    456
    2022-05-07 14:50:02

    버그없이 잘 돌아가는 코드입니다.

    협업하다보면 깔끔하지 않거나 중복이 많은건 별로 신경 안씁니다. 버그만 없이 잘 돌아가는 코드만 줬어도 좋겠네요ㅎㅎ

  • 플로우.
    386
    2022-05-07 18:58:24

    일반적으로

    - 가독성 + 유지보수성 + 테스트용이성

    - DRY, YAGNI


    만약 파이썬이라면

    - Pythonic

    - The Zen of Python


    이라고 생각합니다.

  • 로그인을 하시면 댓글을 등록할 수 있습니다.