Python의 가독성과 OOP에 대한 개인적인 견해

Tips 2021. 9. 29. 12:53

Python과 Java의 가독성을 비교해보면 어떨까? 개인적으로는 Python에 비해 가독성의 측면에서는 Java가 더 우수하다고 생각한다. 물론 이것도 어떻게 코딩을 하느냐에 따라 달라지기 때문에 정답은 아니다. 

Python에 비해 Java는 OOP가 거의 강제되다 시피 코딩을 하게 된다. 그래서 Java를 이용하여 애플리케이션을 구현할 때는 거의 반강제로 OOP 방식으로 설계를 하게 된다. OOP가 꼭 가독성을 높이는 것은 아니지만, 효과적인 구조를 설계하는 과정에서 의식적 혹은 무의식적으로 코드를 읽기 쉽게 짜려고 한다. 

물론 Python도 OOP를 지향한다. 하지만 Python은 OOP가 강제되지 않는다. 물론 Django같은 웹 앱 구현을 위한 프레임워크에서는 OOP로 개발해야 하지만, 그 외 데이터 분석, 머신러닝 등의 통계 및 수리적 문제를 다루는 부분에서는 OOP는 써도 그만 안 써도 그만이다. 그리고 OOP를 적용해야 할 만큼 프로그램의 규모가 크지 않은 경우가 많다.

Python은 Scope를 들여쓰기로 구분한다. 처음에는 이 방식이 획기적이고 깔끔하다 생각했다. 하지만 프로그램의 규모가 커지자 이게 오히려 가독성을 헤치고 있다는 생각이 들었다. Java같이 괄호로 Scope를 구분하면 시각적으로 분명하게 인지할 수 있다. 하지만 들여쓰기는 모호한 면이 없지 않아 있다. 예전에는 IDE에서 괄호의 짝을 검사하는 기능이 부족했다고 하지만, 요즘에는 IDE가 워낙 좋아져서 괄호 짝 맞추는 건 일도 아니다. 

Python 참 좋네 하고 여태 주류 언어로 사용하고 있었지만, 요즘에는 한계를 많이 느끼고 있다. 특히 OOP로 애플리케이션을 구현할 때 부가적으로 해야하는 작업들이 많다. 모듈이나 패키지를 import하기 위해 해야하는 작업들이 너무 귀찮다. 예전에 C++를 하면서 헤더 파일을 중복으로 include 하였을 때 접했던 것과는 또 다른 불편함을 요즘 매번 느끼고 있다. private 함수를 언더바(_)로 작성하는 것이나 네이밍이 스네이크와 파스칼과 같이 일관되지 않은 형식의 표기법들이 섞이는 것도 별로다. 

그래서 Python 문법은 코드 간의 구분이 모호한 것들이 많아 가독성이 떨어진다고 생각한다. 그리고 OOP에 대한 지원은 Java나 C# 같은 컴파일 언어에 비해서는 상대적으로 떨어진다고 본다. 애플리케이션 구현할 때는 왠만하면 Python은 피하려고 한다. 물론 내가 아직 잘 모르는 부분도 많고 공부도 부족해서 그런 걸수도 있지만, 제품 사용해보고 리뷰글 쓰는 것처럼 나도 Python을 최근동안 계속 써본 후 후기를 남긴 것이고, 그저 하나의 의견으로써 존중해주기를...

Python으로 작성한 코드들은 여러 번 리팩토링을 시도했지만, 아무리 리팩토링을 해도 코드가 깔끔하다는 느낌이 들지 않는다. 리팩토링을 처음하는 것도 아니다. Java, C#, C++, Javscript 등등. 이런 언어로 작성한 프로그램들은 왠만큼 리팩토링을 하면 준수한 수준으로 정리가 되는데, 이 녀석은 아무리 정리를 해도 나아지지를 않는다... ㅠㅠ 따흑...

 

 

 

'Tips' 카테고리의 다른 글

Apache Spark Cluster 구성  (1) 2021.10.10
Hadoop의 standalone 설치 방법  (0) 2021.10.08
스킨 추천  (0) 2021.05.07
쥬피터 테마 변경  (0) 2021.05.07
쥬피터 노트북 실행 시 import 자동화  (0) 2021.05.07
admin