안녕하세요! 잇잇쌤입니다.
저는 파스타를 정말 정말 많이 좋아하는데요, 물론 피자두요. 이태리가서 맛본 이후로, 파스타를 직접 만들정도로 좋아합니다. 그런데, 코딩에서도 파스타 이론이 있다는거 알고 계셨나요!?
왜 음식을 코딩에 비유했을까? 그것도 스파게티로?
사실 스파게티 코드는 긍정적인 의미는 아닙니다. 아래 살펴보겠습니다.
코드의 4가지 종류 한번 살펴보겠습니다.
옛~~날 먼 1970년대, c언어밖에 없던 시절.
goto문을 무방비하게 마구 쓰던 시절..
사람들이 자꾸 goto문의 흐름을 그려보다 보니까, 수정도 어렵고, 개발자도 나중에 모르는 사태까지 올 정도로 복잡한 것이었습니다.
그래서 slang 의 의미로 spagetti code 스파게티 코드로 불리게 되었죠.
그렇다면 스파게티 소스 말고도 다른 종류의 코드들이 있다는 걸 알고 계셨나요?
아무래도 잘 만들어진 코딩은 짧은 명령어에, 반복 동작 수행이 제일 적고 속도가 가장 빠른 것
Clean code라고 하는데 , 이러한 코딩은 뭐라고 부를까요?
물론 개발 환경과 문법에 따라 언어에 따라 clean code(best practice)를 위한 방법은 다 제 각기 겠지만 아래 유형은 피해야 되겠습니다.
1) 스파게티 코드
스파게티 코드는 역시 관리 안한 코드 라고 볼수 있겠죠. 누가 수정한거에 또 추가로 수정해서 if문을 만든다던지, goto 문을 무작위로 써서 여기저기로 이동한다던지 하는 코드..
초보자들부터 상급자들은 무조건 스파게티 코드를 피해야 하는 연습을 해야합니다.
2) 라자냐 코드
이건 극단적으로 너무 사람들이 짜놓은 추가추가 add-on된 소스들을 말해요.
over-engineering 너무 많은 기술이 다 들어간거죠.
코드를 심플하게 짜야 되는데, 너무 복잡하게 한곳에 다 기입한건 아닌지 확인해야겠습니다.
특히, object 객체지향 프로그래밍 으로 진행해야 겠죠.
3) 라비올리 코드
라비올리 파스타는 한국에서 흔치 않은데, 약간 만두같이 생긴 파스타 라고 보면 되요~
각 다른 어플리케이션을 접근할 때 너무 어렵게 세분화 구현 되어있는 경우를 말해요.
잘 구조화 되어있는 코드여야하지만, 자칫하면 외부 의존에 대해서 고립되어있는 프로그램을 말해요.
오랜기간 유지보수 하기 어려운 프로그램을 말해요.
정도를 잘 발란스를 맞춰야겠죠 너무 세분화해놓으면, call stack 이 증가하니깐요! 너무 효율적이지 않고,
특히 cpu 가 처리하느라 힘들겠죠.
4) 피자 코드
피자는 파스타 유형은 아니지만, 피해야 될 대상이에요 왜냐하면 너~~ 무 큰 사이즈 덩어리로 function 이랑 클래스를 만들었기 때문이에요. 이해할 수 없을 정도로 너무 큰 사이즈로 만들어버리면 사용하기 힘들겠죠
그래서 피자를 슬라이스로 쪼개야 해요. 논리적인 구조화로 쪼개서 사용할 수 있게 만들어야 되겠죠.
이 말고도, 영어식 antipattern 코딩에 대해 다른 유형들이 있는데,
<아래 마카로니코드, 스톰폴리코드, 캄파넬코드, 박라바> 등이 있다고 하네요.
- macaroni code: source files comprised of multiple programming languages;
- stromboli code: sprays from one end if you bite the other;
- campanelle code: built using a framework almost no one has heard of; and
- baklava code: similar to lasagna code, a codebase with too many architectural or abstracted layers.
한국어로는 어떻게 표현이 되는지 잘 모르겠네요~
엉망코드네 혹은, 완전 이상하다 이정도 표현밖에 없는 것 같아요~
다음시간에는 어떤식으로 유형이 있는지 살펴보겠습니다.
<피자 코드예제>
감사합니다.
'코딩박사' 카테고리의 다른 글
[AI] AI 는 못 만드는게 뭘까? (1) | 2023.02.15 |
---|---|
코딩박사 첫 유튜브 채널 오픈! 10분안에 배우는 도형코딩~ (0) | 2023.02.11 |
[메타버스]"코딩박사" 게더타운으로 OPEN (성공적으로 만들어져) (0) | 2023.01.31 |
[BOOK]독학! javascript 를 어린이가 배울 수 있는 교재가 있다? (2) | 2023.01.19 |
[AI] chatGPT 에게 google vs open AI 누가 더 좋은지 물어봤다. (2) | 2022.12.13 |