온라인 저지에서 클린 코드를 추구할 수 없을까

읽기 편한 코드 VS 이해하는데 시간이 걸리지만 빠른 코드 나는 제 3자가 읽어도 개념적 구조를 무리 없이 이해할 수 있게 “무엇을 넣고, 어떤 것이 기대하는지” 신경을 쓰며 코드를 작성한다. 그러나 백준 온라인 저지의 문제를 매일 최소 한문제씩 풀고, 23시에 회고를 하는 “데일리 백준” 모임에 참여하게 되면서 이런 취향에서 어느 정도까지 타협을 해야 될지 고민하고 있다. 제 3자가 무리 없이 개념적 구조를 이해할 수 있는가? ‘무리 없이’라는 것은 코드 자체가 컴퓨터에서 느릴 수 있지만, 사람에게 ‘구문’으로서 쉽게 이해할 수 있다는 나의 주관적인 가치이다. 그렇지만 무리가 좀 있어도 구현체가 충분히 빠르고, 테스트 또는 문서의 도움으로 개념적 구조를 이해할 수 있으면 클린 코드라 부를 자격이 있어 보인다고 최근의 경험을 통해 생각이 바뀌였다. ...

2020년 5월 5일 · 2 분 · 365 단어 · 김무훈

if 문 없는 파이썬 코드 작성하기

우연히 Medium에서 *Coding Tip: Try to Code Without If-statements - samerbina*을 접하게 되면서 교내 학식 크롤러 ‘jejunuMeals‘를 if문 없이 새로 작성해봤습니다. 딕셔너리를 사용하여 줄여보자 if문으로 제어하는 weekday , atom 을 딕셔너리 구조로 대체한다면 코드를 상당히 절약할 수 있을 것 같았다. for index, atom in enumerate(data): if index == 1 or index == 5 or index == 9 or index == 13 or index == 17: weekday = weekday + 1 yaml[weekday]['점심'][atom['정식'] = atom[2] yaml[weekday]['저녁'][atom['정식']] = atom[3] elif index == 2 or index == 6 or index == 10 or index == 14 or index == 18: yaml[weekday]['점심'][atom['특식']] = atom[1] yaml[weekday]['저녁'][atom['특식']] = atom[2] elif index == 3 or index == 7 or index == 11 or index == 15 or index == 19: yaml[weekday]['점심'][atom['양식']] = atom[1] yaml[weekday]['저녁'][atom['양식']] = atom[2] elif index == 4 or index == 8 or index == 12 or index == 16 or index == 20: yaml[weekday]['점심'][atom['중식']] = atom[1] yaml[weekday]['저녁'][atom['중식']] = atom[2] return toYaml 여러 키에 같은 값을 대입하기 flags = {(1, 5, 9, 13): 2} # 처음에 생각했던 방법인데 안됨 flags = dict.fromkeys([1, 5, 9, 13], 2) # 되지만 각각의 키들의 값이 동알한 메모리를 참조함 flags = {k:2 for v in [1, 4, 9, 13]} # 컴프리헨션으로 각자 다른 참조 가능 flags 딕셔너리로 atom 을 제어하기 위해 여러 키에 같은 값을 대입하는 방법을 생각해봤다. ...

2018년 7월 7일 · 2 분 · 328 단어 · 김무훈