어느 레벨에서 말단을 잡고 어느 레벨에서 로직을 구체적으로 구현할 것인가에 대해 설계단계에서부터 고민해봐야함


이건 비슷한 프로그램을 반복적으로 혼자 많이 짜보다 보면 느끼게 될거임


어느 레벨에서 말단을 잡아야 내가 최대한 수정을 덜 하고 필요한 수준의 유지보수까지 깔끔하게 할 수 있을까?


그래야 중구난방 뒤죽박죽 식으로 구현되는 스파게티 설계를 막을 수 있음




가령 말단레벨 클래스에서 하드코딩을 박아넣고 코딩을 엑셀처럼 하는 개새끼들이 있는가 하면


말단에 있어야할 새끼를 차상위 클래스에 박아넣고 최상위에 분칠을 하는 씹창새끼들이 있음


이걸 가이드라인처럼 어디에서 뭘 하고 어디에다는 뭘 붙이세요 정해주는 역할이라고 해야하나 내가 이해하는 인터페이스는 이런거임




내가 오토충 출신이라 그런지 기본 인터페이스 구성할때 항상 들고 다니는 템플릿이 있음


오토메이션 프로그램을 만들때 인터페이스를 염두하면서 기본 틀을 잡고 각 사용자 요구에 맞춰서 추가기능이 들어감


기본적으로 조이스틱이나 버튼을 만들고 조이스틱의 자동화 동작 (q평q 같은 연속동작)을 만드는거


옛날에 오토 쉽게 짜주는 프로그램같은게 있었는데 거기서 좀 영감을 받았음


표준화된 동작이 있고 그걸 사용자가 어느정도 수정 가능하도록 하는거


그 사이에 있는게 인터페이스가 아닌가 내가 이해하는건 이런거임


내가 잘하는건진 모르겠는데 내가 짜는 라이브러리 중 실제로 동작하는 프로그램에서 쓰이지 않는 소스들도 많음


하지만 그게 오늘 안쓴다는거지 내일도 안쓸거란 보장이 없음 ㅋ 그런 경우 종종 있었다


그래서 나는 쓸데없어보여도 인터페이스를 기준점으로 전부 구현하고 시작했음




보통 인터페이스가 없는 팀의 문제라고 한다면 당장 표준화된 아키텍처의 개념이 없는게 아닐까 싶음


이거저거 덕지덕지 그때그때 급조해서 갖다붙이는데


내가 생각하는 프로그램의 구조랑은 좀 많이 다름 헤드쿼터 없이 불가사리같은 프로그램임 ㅋㅋㅋ


겉으로 보이는건 깔끔해보이는데 전체적인 구조를 보면 뭐가 어디에 있는지 찾아들어가기가 너무 힘듬


어떤건 메소드 하나에 다 때려박는 미친새끼도 있고 그러다보니 변수 전달에서 낭비되는 경우도 왕왕 있음


깔끔한 일렬로 된 상속구조도 아니고 중간에 서로가 서로의 보지를 핥아먹는 구조같음


보고 있으면 좀 감탄하게 된다 ㅋㅋ




이게 혼자 짜면 큰 문제는 안됨 사실 프로그램이라는게 돌아가기만 하면 아무 문제가 없는거니깐


근데 이게 사람이 좀 붙고 서로 생각다른 새끼들(사실 정확히는 수준이 서로 다른 새끼들)이 만나면


서로 다른 색깔의 똥을 싸지르고 누구는 치우다 못해 포기하고 다같이 스파게티 아키텍처를 만들게 되서


나중가면 이미 구현된 기능 또만들고 그런일이 반복될거임


가끔 그거 정리하는걸 내가 하는데 ㅅㅂ 진짜 왜 만든건지 모르는 녀석들이 즐비함 이유없이 그냥 찍어냄