2년간 SI 뛰면서 겪은 누가 더 병신력 자랑하는지 뽐내는 소스(라 적고 설사라 부른다.)


나는 자바 개발자였기 때문에, 자바와 관련된 내용밖에 없음을 참고 바람.


1.안드로이드 UI static으로 걸기.

내가 만 2년간의 SI의 여정에서도 적은 거지만. 이건 꿈이 아님.


스위치 on/off와 같은 성격의 기능을 담당하는 UI에 전부 static이 걸려있음.

이전 개 시팔년 개발자의 의도를 파악하자면,  다른 화면에 가서도 해당 버튼과 같은 동작을 할 수 있기에

그 상태를 동기화 시켜야 했음.(현재화면/이전화면 모두 같은 상태를 표현해야 됬다는 얘기.)


하지만 이새끼는 개발에 손대면 안되는 2가지 이유를 가지고 있음.


사유 1 : 안드로이드 지식이 전무한 상태에서 기능 구현.

(boolean으로 관리해도 될 값을, 굳이 UI객체로 관리했음은 메모리 개념이 없음을 의미. 덕분에 UI가 GC되지 않음.)


사유 2 : 객체지향을 모르는 수준이 아니라 관심이 전혀 없으며, static의 위험성을 모르는 개발에 손대면 안되는 새끼.

(접근제한자 public. 네트워크 통신하다가 Button Enabled/Disabled함.

 소스 파악하는데 IDE가 존나 좋아서 다행이었지, IDE없었으면 어디서 UI조작하고 있는지 찾을 수 없음.

 또한 멀티스레드에서 thread safe를 전혀 고려하지 않아, on버튼 눌렀는데 off 동작함.)



2.중복 코드

좋은 코드를 짜는 법에 관련된 책에서는 '나쁜 냄새가 나는 코드'라고 표현함.

ctrl + c, v 하는 건 큰 상관없다. 나도 모르는 건 구글링해서 복붙하니까.

문제는 이거임.


예시

int add(int a, int b){

if(a<0) return;

if(b<0) return;


return a+b;

}


int add(int c, long d){

int b = (int)d;


if(a<0) return;

if(b<0) return;


return a+b;

}


int add(long c, long d){

int a = (int)c;

int b = (int)d;


if(a<0) return;

if(b<0) return;


return a+b;

}


int add(double c, double d){

int a = (int)c;

int b = (int)d;


if(a<0) return;

if(b<0) return;


return a+b;

}


int add(double c, long d){

int a = (int)c;

int b = (int)d;


if(a<0) return;

if(b<0) return;


return a+b;

}


int add(double c, long d){

int a = (int)c;

int b = (int)d;


if(a<0) return;

if(b<0) return;


return a+b;

}


예를 들자면 이런 형태임. 이런식으로 오버라이딩 메소드가 프로젝트 전반에 걸쳐 있었음.

내가 여기서 a+b를 리턴하기 이전에 10 미만이면 0 리턴하는 걸 추가 반영하려면 존재하는 모든

메소드에 소스를 추가해야 하는 상황.


새벽1시였나. 계속 작업하다가 존나 빡쳐서 중복코드만 제거하는데 새벽 3:30분에 택시타고 귀가함.

현업에 이런 코드 없을 것 같았으나, 그건 내 꿈이었음.


3.소스는 채팅창이 아닙니다.

기존에 운영되던 웹페이지를 요구사항 변경으로 추가 작업해줄 일이 생겨 소스를 보기 시작.

ajax(비동기형 자바 스크립트 처리)에서 토론이 열리고 있었음.

------------------------------------------------------------------------------------------------------------

소스


$.ajax(~~~~~~

//첫번째 구현자 소스//(2011.x.x) ajax는 비동기 자바스크립트 어쩌고. 이런식으로 사용하면 안되는겁니다. 공부 좀 하세요.


//두번째 구현자 소스//(2011.x.x) 첫번째 구현자입니다. 크로스 브라우져 이슈로 이렇게 구현해야 하는 겁니다.

 i.e x.x 브라우져에서 테스트는 해보신겁니까?


//첫번째 구현자 소스//(2011.x.x) 두번째 구현자입니다. 크로스 브라우징은 이렇게 해결하시는 게 맞는겁니다. 참고되시기 바랍니다.


두번째 구현자 소스

------------------------------------------------------------------------------------------------------------


어떻게 할까 고민하다가 나도 댓글 남겨줌.


첫번째 소스 //(2012.x.x)테스트 해보니 첫번째 구현하신 분 소스가 동작하고, 두번째 분 껀 동작안해서 주석처리 합니다.






끝맺음 : 토론은 게시판, 싸움은 현피. 소스엔 코드만.