느슨한 타입(loosely typed)의 동적(dynamic) 언어의 문제점은 무엇이고 보완할 수 있는 방법에는 무엇이 있을까? (뭔소리지?)

hipAn·2022년 9월 23일
0

끄적끄적 성장일지

목록 보기
6/30

저 질문을 한참을 다시 읽어보고 생각해보고 고민해보았지만 ...

" 응 난 잘 모르게따.."

시간낭비하지말고 빠르게 구글링해서 찾아보았다.

구글에 따르면 "동적 언어의 문제점을 보완하기위해서는
1. 변수는 꼭 필요한 경우에 한해 제한적으로 사용한다. 2. 변수의 스코프를 최대한 좁게 만들어 변수의 부작용을 억제한다. 3.어쩌고 저쩌고..."

라고 나와있다...

뭔소린지 이해가안가는 이런 상태로 지나가버리면 분명 나중에 어디가서 바보소리듣기 딱 좋기때문에 확실하게 알아보고 이해하고 지나가보자.

이전에 이야기 했듯이 느슨한타입의 동적언어인 잡스(자바스크리트 기니까 줄여서 부르자)선생님은 자유로운 변수의 값을 재할당 할수있다고 하였다.

이로인한 문제점들을 생각해보면 대략적으로 아래와 같이 문제가 발생한다.

  1. 엄청나게 복잡하고 대단한 프로그램을 만들었거나 내가 신입으로 입사했더니 이미 만들어져있는 어마무시한 코드들에 직면하였는데

매번 변수의 값이 자기멋대로 코드짜는 사람 마음대로 뒤죽박죽으로 할당이되어있다면... 이것을 역으로 추적하기도 힘들뿐더러 나중에 어떠한 이유로든 충분히 에러가 발생할수있을것이라는 생각을 해 볼수가있다.

즉 나중에 유지보수하기도 빡싈뿐더러 이것때문에 문제가 발생할 위험이있다는 말이다.

  1. 위와같이 엄청난 코드들이 있을때 혹은 협업을 할때에 내가 처음에 의도한것은 "음 이건 숫자니깐 요롷게하고 요건 문자니깐 요롷게 해야징" 하고 코드를 짯는데 이게 나중에가서는 문자가되어있고 숫자가 되어있을수도있고 내 의도와는다르게 뒤죽박죽반죽이 되어버릴 가능성이 농후하다.

그렇기때문에 또 나중에 누군가가 혹은 내가 빨간색 에러창을 마주하며 속으로 "ㅅㅂ.. 또 잠못자겠네" 를 연발할 가능성이 높아진다.

3.위와같이 뒤죽박죽반죽 파티가 벌어지면 1번에서 말했다싶이 역추적을하던 뭘 하던 해서 고쳐나가야하는데 이게 문제있는부분을 바로 찾아가기가 굉장히 난해한 상태일수밖에없다.

즉 대충 짧게 나같은 초보들이 뭘 만들때
"=== 응? 이거 빨간줄 멍미? ... 하나 지워 == 오 성공"
이런식으로 어디가서 일하거나 협업하면 걷어차여도 할말이 없는것이다.

이것들을 쓰다보니 무엇을 하면 안되는지 슬슬 감이오기시작하는데,
구글에 이런저런 글들이 많지만 이해도 안가는거 괜히 복붙해넣지말고 내생각이나 써보자.

1.변수를 남발하지말자 !! 잡스 선생의 특성상 느슨한 동적 언어이기때문에 변수를 남발해두면 나중에 내가 멘탈이 무너질만한 가능성들을 남발한다는 뜻이기때문에 최대한 필요할때사용하도록 하고 코드를 간결하게 작성하는 연습을 하자.

2.나는 그동안 let 에만 굉장히 적응이 되어있던지라 뭐만하면 let 앙 = 어쩌 let 엉 = 어쩌 let 웅 = 저쩌

위와같이 작성했었는데 let은 변경할수있는 범위가 넓기때문에

const와같은 상수를 사용하도록 하자.

뭐 짜다보면 "이건 좀 바뀌어도 상관없다" 거나 " 이건 나중에 재할당 꼭 해야한다" 같은거는 당연히 let을 써도 되지만 그렇지않고 이건 꼭 끝까지 이값으로 고정이다! 라고 하는건 일단 알고있는 const를 쓰자.

3.변수 이름 아무렇게 막 써놓지말자.

이것도 내가 항상 하던짓이다..

물론 아직은 혼자하고 협업도 작은단위로하지만 나는 변수를 설정할때
그냥 구현에만 신경쓰다보니 빠르게 빠르게 하다가 let a = 뭐
let b = 뭐

let aa = 뭐뭐
let b2 = 뭐뭐

이런식으로 코드를 짯는데

문제가 나중가면 "이게 뭐였찌?" 하면서 다시 찾아 올라가게되는 경우들이 종종 생겻었다.

바보같이... 앞으로는 이런 실수는 하지말자!

이 외에도 더 많은것들이 있지만 추후에 차근차근 더 이해해 보도록하자.

0개의 댓글