1. 예외처리
1. 오늘 만난 코드
if(ret == null || ret == undefined || ret == "" || ret == "[]" || ret == "undefined"){
/*공백*/
}else{
/*로직 시작...*/
}
2. 기존 내가 썼었던 코드
// if문에 핵심로직이 들어가도록 조건을 설정했었다.
// (A == B) || (C == D) 를 논리식으로 뒤집으면..(논리회로 생각)
// A != B && C != D 가 된다 따라서..
if(ret != null && ret != undefined && ret != "" && ret != "[]" && ret != "undefined"){
/*로직 시작..*/
}
if절 안에 핵심로직을 넣기 위해서 not처리를 하도록 했다.
하지만.. 내가 생각하는 기존에 썼었던 코드의 문제점은.. 코드가 직관적이지 않았던것 같다.
(지금 생각하면 if문에 굳이 핵심로직이 들어갔어야 하나? 라는 생각이 든다.)
오늘 만난 코드와 비교했을때 상대적으로 동작을 한번 더 생각해야 하기 때문이다.
쉽게 말해서 눈에 들어오지 않는 코드 였던것 같다.
하지만 오늘만난코드는 한눈에 들어와서 작성자가 의도하는 것을 바로 이해할 수 있다고 느꼈다.
3. 개선
// Validation을 만족하지 않으면 함수를 종료함으로써 의도를 명확히 드러낸다.
if(ret == null || ret == undefined || ret == "" || ret == "[]" || ret == "undefined"){
return;
}
/*핵심 로직 시작*/
추가 하자면.. 어디서 본건지 기억은 안나지만... Validation을 만족하지 않으면 바로 return으로 종료함으로써 의도하는바를 명확히 드러내는 코드 작성을 권장하는 글을 본적이 있다.
오늘 만난 코드를 이런식으로 개선하면 좋지 않을까 하는 생각이 든다.
2. 공통코드에 부쩍 관심이 많아졌다.
요즘 코드를 작성할때의 관심사는 "직관적인 코드" "재사용이 간편한 코드" 다.
그중에서도 어떻게 하면 다른사람이 쉽게 가져다 쓸 수 있는 코드를 작성 할 수 있을까. 에 대한 고민이 크다.
그러던중 만난 코드.
form id를 파라미터로 받아서.. 제이쿼리로 하위 요소들 중.. valid attribute가 empty인 요소드를 each메서드를 이용해 하나씩 아져온다.. 그리고..
text, tel, hidden, password 타입은 공백여부를 체크하고
radio나 checkbox타입은 name이 지정되었는지 여부를 체크한다거나, 체크한 요소가 있는지 여부를 결정한다.
form id를 받아서 하위 input노드들을 하나하나 탐색하며 valid 체크를 한다는점에서 마음에 들었다.
누군가 가져다 입맛에 맞게 고쳐서 사용 할 수 있을것 같다.
function validCk(formId){
var isValid = true; //Validation Ck를 만족하는지 여부를 나타내는 flag
$('#' + formId).find('[valid=empty]').each(function(){
var type = $(this).attr('type');
var name = $(this).attr('name');
if(isValid) {
switch(type){
case 'text':
case 'tel' :
case 'hidden':
case 'password':
if($(this).val() == '') isValid = false;
break;
case 'radio':
case 'checkbox':
if(name === undefined || name == ''){
throw 'name Property가 지정되지 않았습니다.' return;
}
isValid = $('input[name=' + name + ']:checked').length > 0 ? true : false;
break;
default
break;
}
}
});
return isValid;
}
내일 만날 코드들을 기대하며...
오늘 만난 코드들 끝.
'Today I learned' 카테고리의 다른 글
20191210 보안 SW 개발 세미나 2일차 (0) | 2019.12.10 |
---|---|
20191209 보안 SW 개발 세미나 1일차 (0) | 2019.12.09 |
[정보처리기사 알고리즘] 이차원 배열 '모래시계' (0) | 2019.09.25 |
[정보처리기사 알고리즘] 버블정렬 (0) | 2019.09.23 |
[정보처리기사 알고리즘] 선택정렬 (0) | 2019.09.23 |
댓글