A, GitHub의 주소 : https://github.com/asswecanfat/WC
두, PSP 양식 :
PSP2.1 | 개인 소프트웨어 프로세스의 단계 | 예상 시간이 소요 (분) | 실제 시간이 많이 소요 (분) |
---|---|---|---|
계획 | 계획 | (25) | (30) |
· 견적 | • 견적 얼마나 많은 시간이 작업이 필요 | (25) | (25) |
개발 | 개발 | 1,400 | 1,500 |
· 분석 | · 분석 필요 | 130 | (150) |
· 디자인 사양 | 설계 문서를 생성 | (60) | (50) |
· 설계 검토 | · 설계 검토 | (30) | (45) |
· 코딩 표준 | · 코드 사양 | (40) | (40) |
· 디자인 | · 특정 디자인 | (80) | (90) |
· 코딩 | · 특정 코딩 | (930) | 965 |
· 코드 검토 | · 코드 검토 | (20) | (20) |
· 테스트 | · 테스트 (자체 테스트, 코드를 수정, 수정 제출) | (150) | (160) |
보고 | 보고서 | 130 | 130 |
· 시험 보고서 | · 시험 보고서 | (60) | (70) |
· 크기 측정 | · 컴퓨팅 워크로드 | (40) | (30) |
· 사후 및 프로세스 개선 계획 | · 돌이켜 보면, 프로세스 개선 계획을 제안한다 | (30) | (30) |
합계 | 1,555 | 1,660 |
셋째, 문제 해결 아이디어
(1) 조심스럽게 전체 프로젝트 요구 사항을 읽고 난 그냥 적절한 조치가 될 수 있습니다 추출하기 위해 명령 줄 매개 변수를 찾아야합니다.
(2) 첫째, 파이썬의 타사 모듈을 사용 : 클릭, 개발자는, 적절한 명령 줄 매개 변수를 추가하여 구현 기능에 초점을 맞출 필요가 적절한 방법을 쓰기 때문에 그것은, 방법의 수를 명령 줄 개발 도구 패키지입니다, 하지만 단점은 파이썬을 수행 할 수없는 xxx.py -l -w -c xxx.py 비슷한 명령 나는 공식 문서를 참조하지 않았기 때문에 (달성 될 수있다 (즉, 세 가지 기본 명령어를 동시에 두 가지 기본 명령 또는 사용을 사용), 그러나 종류의 예를 찾을 수)
(3) 나는 기본 기능은 모두 첫 번째 방법으로 작성된 사전을 반환 w_func, 나는 비슷한 문자열을 반환 고려 않았다 c_func, l_func 내부 BaseFunc의 쉬운 확장과 유지 보수라는 클래스에 캡슐화합니다 '이 XX XX 파일 문자는'하지만, 다른 방법을 쓸 때 나중에 좋은 계획을 찾을 수 없음. 따라서, 모양과 모듈 사이의 크로스 콜을 고려하여, 캡슐화 과정에서 사전에 발신자의 사전을 반환하기로 결정했다.
(4) 확장 SeniorFunc 클래스 -a 캡슐화, directory_processing 배치 -s 다른 유형의 통화를 용이하게 중첩 -a의 사전 목록을 반환하는 기본 클래스 및 확장 클래스를 이용리스트 저장 방법 -s (즉 -l, -w.-C, -a), 재귀 적으로 문서 처리에있어서의 계속적인 사용을 용이하게하는
(4) 오류 처리의 모듈 부분을 클릭하기 때문에, (가) 경우 - 다른 것은 오류 처리의 작은 부분에 저를 직접 사용하고, 여러 가지 파이썬 자체가 있기 때문에 입력 파일 처리 오류가 오류를 발생시키지 않습니다 후,하지만 False를 반환, 그래서 더 좋을 것입니다 다루는 것이 아니라 쇠퇴 클럽 하우스 유지 보수의 정확한 오류율을 캡처하는 경우 - 다른 사용하여 생각합니다.
(5) 파이썬 파일 오픈 모드는 전용 바이트를 판독 'R'및 'RB', 전자는 일반적으로 개방 기능 부호화 첨가 = "UTF-8"필드로, 호화 . 따라서, 열린 파일을 촉진하기 위해, 나는 전자를 사용하지만, 파일 UTF-8 모드를 읽을하지 않을 경우 직접 오류가 발생하지, 몇 가지 사소한 문제가있을 것이다, 그래서 나는 다음 스키마 파일을 코딩 감지 chardet 모듈을 사용하고, 재 부호화 = 파일의 인코딩 형식은 '적격 파일'순환 모드에 있지 않는다가 나게되고, 오디오 파일 등을 재귀 제거한다.
(6) 와일드 카드를 구현하기 위해, 내가 달성하기 위해 정규식을 사용했다 의해 *. + 대체됩니다에게, 수 있습니까? 대체되었습니다.,이 기능을 실현하고, 포장 공정 wildcard_deal에서 할 수있다.
(7) 그래픽 페이지가 나는 QT 디자이너와 함께 제공하기 때문에, 빠르게 그래픽 페이지와 아름다운을 개발할 수 있지만, pyqt5를 사용하기 시작 나는 파일 대화 상자를 드래그 할 수있는 모듈을 찾을 수 있지만, 자신의 필기를 필요로하지 않았기 때문에 파이썬은 아름다운 Tkinter를을 제공하지만, 각 클래스의 기능을 달성 할 수 호출 할 수 없습니다 사용하므로 코드의이 부분.
넷째, 설계 및 구현 과정
화장실 파일이 BaseFunc 기본 기능 클래스, ExpandFunc 확장 클래스, SeniorFunc 그래픽 페이지 클래스, 주요 실행 방법, wildcard_deal 와일드 카드 처리 방법에서, deal_directory 재귀 처리
다섯째, 테스트 실행
테스트 파일은 다음과 같습니다 : 빈 파일을, 파일은 하나의 캐릭터, 한 단어 문서 표준 파이썬 소스 파일, 하나 개 이상의 디렉토리 중첩 된 파일이
5.1 테스트 비 재귀 함수 (-l, -a, -w, -C)
5.1.1 테스트 빈 파일
파일의 5.1.2 시험 단 하나 개의 문자
5.1.3 한 단어 파일을 테스트
5.1.4 시험 표준 파이썬 소스 파일
존재하지 않는 5.1.5 테스트 파일
5.2 테스트 비 재귀 함수 (-s -a / -w / -l / -c)
5.2.1 시험 중첩 다중 디렉토리 파일
5.2.2 시험 와일드 카드 중첩 다중 디렉토리 파일?
5.3 그래픽 기능 검사 (-x)
모든 처리 결과의 검증 후 예상 결과와 일치
코드 적용 :
인해 커버리지가 감소 될 수 있도록 .coverage 것이다 .coverage 전에 희석 그래픽 인터페이스 테스트 생성
VI 프로젝트 요약
이 프로젝트는 다양한 모듈 사이의 관계를 계획하는 방법, 구조하는 방법에 대해 생각하는 나를 만든, 그래서 나는 뒤에 소프트웨어 엔지니어링의 깊은 이해에 갔다. 일반적으로이 코드의 중복 내 기대를 저 너무 높은 것이 아니라 부합하지 않은, 아주 좋은하지 않습니다, 전체가 좋은 프로젝트 연습 손이다, 나를 보자 또한 깊은 코딩 표준 모드 PEP8 파이썬의 이해, 이에 내가 더 배울 수있는 프로젝트의 뒤에 바랍니다.