이 문서 내용은 좀 낡았습니다.
60일이나 편집 안된 오래된 망한 문서니 개발 문서인 경우 참고할 때 조심하세요. 최신 정보를 알고 싶으면 게시판에 글 써주세요
edit_delete_file부터 타입 힌팅을 도입한 이후로 새로 짜는 코드에는 타입 힌팅을 본격적으로 도입하고 있다. 그러한 과정에서 얻는 장단점을 서술하는 공간이다. 추가로 타입 체크는 mypy를 이용해서 하고 있다.
1.1.1. 타입 헷갈려서 오는 문제를 미리 잡아줌 ✎ ⊖
data = "test"
for for_a in range(0, 10):
data += for_a
예를 들자면 이런 문제
data = re.search(r"(test)", main_data)
data = data.groups(1) # 만약 re.search에서 None이 나왔다면 오류 뜨는 데 미리 잡아줌
예를 들자면 이런 문제
1.1.3. 변수의 요상한 재사용을 막아줌 ✎ ⊖
db_data = "test"
db_data = 3
이런 난잡함을 미연에 막아준다. 예를 들면
이런 버그(1) 1.2.1. 인터프린터 언어의 장점을 깎아먹음 ✎ ⊖
인터프린터 언어의 장점은 빠르게 실행해서 QA를 실행하는 것에 있다고 생각하는 데 이렇게 미리 타입 체킹을 하니 컴파일 하는 것 만큼 느려져서... 가장 큰 장점이 사라지는 것 같은 기분이 있음
(2)1.2.1.1. 쓰면서 그냥 컴파일 언어 쓰는 게 더 좋지 않나 이런 생각 듬 ✎ ⊖
변수에 전부 타입 명시하면서 갑자기 든 생각이 이럴꺼면
Golang으로 다시 짜는 게 빠르지 않을까...라는 허무함이 있음
| |
전 | 후 |
이런 오브젝트 기반 변수들은 유니온으로 묶어야하는데 유니온으로 묶으니 쓸 때 없이 길어지는 기분임
1.2.3. 애초에 QA 계획을 정상으로 세워놨으면 잡힐 문제가 많음 ✎ ⊖
애초에 상단에 저런 타입 헷갈려서 생기는 문제는 한번이라도 동작 시켜보면 바로 잡히는 문제들이라서... 이게 필요한가 아리송한 기분이 있음
(3)1.2.4. 타입 힌팅을 따로 지원 안하는 외부 라이브러리 문제는 못 잡음 ✎ ⊖
curs.execute(db_change('select set_code from bbs_data'))
db_data : list[tuple[str]] = curs.fetchall()
print(db_data[0][0]) # db_data가 None일 수도 있는데 별 말이 없다...
(4)나쁘진 않은 것 같은데...
자바스크립트야
타입스크립트가 뜬 이유가 자바스크립트 언어 설계가 메롱해서 그렇다
(5)치지만 파이썬은 강력한(strong) 타입 검사를 하는 지라 타입으로 일어날 오류는 한번 실행하면 딱 견적이 나온다
(6)그래서... 암만 생각해도 필요성이 아리송하다. 인공지능 같은 한번 실행에 굉장히 오래 걸리는 프로그램이라면 그럴만 한데
오픈나무가 그런가?에 대해서는 좀 의문이다. 좀 더 고민해볼 필요가 있는 것 같다.
|
파이썬 3.9에서 3.10으로 발전 |
|
파이썬 3.10에서 3.11으로 발전 |
참고로 기본적으로 파이썬 3.11을 사용해서 이전 파이썬들에 비해서 오류 설명을 좀 더 잘 복잡하고 정확하게 집어줘서 이런 생각이 드는 것도 있지 않을까 생각한다.
오픈나무 개발에는 타입 힌팅을 사용하지 않기로 결정했다
더불어서 이 문제는 파이썬만의 내용은 아니라서
JS와
TS 사이에도 여러 논의가 나오는 것 같다.
각자 때에 맞는 환경을 잘 결정해서 판단하는 게 중요한 것 같다