문제

저는 파일당 하나의 공개 클래스를 가질 수 있는 Java 모델에 익숙합니다.Python에는 이러한 제한이 없으며, 수업을 구성하는 가장 좋은 방법이 무엇인지 궁금합니다.

도움이 되었습니까?

해결책

Python 파일은 "모듈"이라고 하며 소프트웨어를 "의미 있게" 구성하는 한 가지 방법입니다.또 다른 하나는 "패키지"라는 디렉터리입니다.

모듈은 밀접하게 관련된 클래스가 1~20개 있을 수 있는 별개의 것입니다.비결은 모듈이 가져올 것이고, 소프트웨어를 읽고, 유지 관리하고 확장할 사람들이 완벽하게 인식하려면 해당 가져오기가 필요하다는 것입니다.

규칙은 다음과 같습니다. 모듈은 재사용 단위입니다..

단일 클래스를 쉽게 재사용할 수 없습니다.어떤 어려움 없이 모듈을 재사용할 수 있어야 합니다.라이브러리에 있는 모든 것(그리고 다운로드하고 추가하는 모든 것)은 모듈이거나 모듈 패키지입니다.

예를 들어 스프레드시트를 읽고 계산을 수행하며 결과를 데이터베이스에 로드하는 작업을 하고 있다고 가정해 보겠습니다.메인 프로그램이 어떤 모습이기를 바라나요?

from ssReader import Reader
from theCalcs import ACalc, AnotherCalc
from theDB import Loader

def main( sourceFileName ):
    rdr= Reader( sourceFileName )
    c1= ACalc( options )
    c2= AnotherCalc( options )
    ldr= Loader( parameters )
    for myObj in rdr.readAll():
        c1.thisOp( myObj )
        c2.thatOp( myObj )
        ldr.laod( myObj )

가져오기를 개념이나 덩어리로 코드를 구성하는 방법으로 생각하세요.각 가져오기에 정확히 몇 개의 클래스가 있는지는 중요하지 않습니다.중요한 것은 당신이 묘사하고 있는 전체적인 조직이다. import 진술.

다른 팁

인위적인 제한이 없기 때문에 이해 가능한 내용에 따라 달라집니다.논리적으로 함께 그룹화되어 있는 매우 짧고 간단한 클래스가 여러 개 있으면 여러 개 넣으세요.크고 복잡한 수업이나 그룹으로 이해하기 어려운 수업이 있는 경우 수업당 하나의 파일로 이동하세요.아니면 그 사이에서 무언가를 선택하세요.상황이 바뀌면 리팩토링하세요.

나는 다음과 같은 이유로 Java 모델을 좋아합니다.각 클래스를 개별 파일에 배치하면 소스 코드를 탐색할 때 클래스를 더 쉽게 볼 수 있으므로 재사용이 촉진됩니다.여러 클래스가 단일 파일로 그룹화되어 있는 경우 프로젝트의 디렉토리 구조.따라서 귀하의 클래스를 재사용할 수 있다고 생각되면 해당 클래스를 자체 파일에 넣을 것입니다.

전적으로 프로젝트의 규모, 클래스의 길이, 다른 파일에서 사용할지 여부 등에 따라 달라집니다.

예를 들어 저는 데이터 추상화를 위해 일련의 클래스를 자주 사용합니다. 따라서 길이가 한 줄에 불과한 클래스가 4~5개 있을 수 있습니다(class SomeData: pass).

이들 각각을 별도의 파일로 나누는 것은 어리석은 일입니다. 그러나 서로 다른 파일에서 사용될 수 있으므로 이 모든 것을 별도의 파일에 넣습니다. data_model.py 파일이 의미가 있으므로 할 수 있습니다 from mypackage.data_model import SomeData, SomeSubData

코드가 많고 클래스에서 사용하는 일부 기능만 있는 클래스가 있는 경우 이 클래스와 도우미 함수를 별도의 파일로 분할하는 것이 좋습니다.

그렇게 구성해야합니다 from mypackage.database.schema import MyModel, 아니다 from mypackage.email.errors import MyDatabaseModel - 의미 있는 항목을 가져오는 위치에서 파일 길이가 수만 줄이 아닌 경우 올바르게 구성한 것입니다.

그만큼 Python 모듈 문서 패키지 구성에 대한 유용한 정보가 있습니다.

파일의 크기 때문에 짜증이 나고 바람직한 관련성 구조가 자연스럽게 나타나기 시작할 때 나는 일을 쪼개고 있는 나 자신을 발견한다.종종 이 두 단계는 일치하는 것처럼 보입니다.

너무 일찍 분할하면 완전히 다른 구조 순서가 필요하다는 것을 깨닫기 시작하기 때문에 매우 짜증날 수 있습니다.

반면에 .java 또는 .py 파일이 약 700줄을 넘으면 "해당 특정 비트"가 어디에 있는지 기억하려고 끊임없이 짜증이 나기 시작합니다.

Python/Jython에서는 import 문의 순환 종속성도 역할을 하는 것으로 보입니다.너무 많은 협력 기본 빌딩 블록을 별도의 파일로 분할하려고 하면 언어의 이러한 "제한"/"불완전함"으로 인해 아마도 합리적인 방식으로 항목을 그룹화해야 하는 것 같습니다.

패키지로 분할하는 것에 관해서는 잘 모르겠지만 아마도 동일한 성가심 규칙과 행복한 구조의 출현이 모든 수준의 모듈화에서 작동한다고 말하고 싶습니다.

너무 크고 복잡하게 만들지 않으면서 해당 파일에 논리적으로 그룹화할 수 있는 만큼 많은 클래스를 넣으라고 말하고 싶습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top