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)테스트 해보니 첫번째 구현하신 분 소스가 동작하고, 두번째 분 껀 동작안해서 주석처리 합니다.
끝맺음 : 토론은 게시판, 싸움은 현피. 소스엔 코드만.
전자 같은애들은 취업 어케 함?
ㅋㅋㅋㅋㅋㅋㅋ