Rozdział 23 · Część I · Git i GitHub od podstaw

Co stworzymy: SafeSort

Program, który porządkuje pliki — najpierw pokazuje, co zrobi, a dopiero potem wykonuje to na polecenie.

SafeSort · Część 1 z 6
Git i GitHubPlanowanieProjektWdrożenieTesty i CIPremiera

Jak dotąd pisaliśmy programy częściowo: funkcje, gry, interfejsy. Teraz Złóż jeden projekt w całości i doprowadź go do stanu, który można umieścić na GitHub. Program nazywa się SafeSort, i oto co robi.

Tak było
Downloads/
report.pdf
photo.jpg
archive.zip
notes.txt
copy_of_notes.txt
Stało się
Downloads/
Sorted/
documents/
report.pdf
notes.txt
copy_of_notes.txt
images/
photo.jpg
archives/
archive.zip
notes.txt i copy_of_notes.txt — ta sama zawartość; SafeSort poinformuje o tym osobno, a nie usunie pliku samodzielnie.

Na początku program pokazuje tylko to, co ma zrobić. Pliki przeniesienia może być tylko osobnym, wyraźnie nazwanym poleceniem:

Użytkownikuruchamia polecenieSafeSortscan / plan / apply /duplicates / undoSystem plikówjest czytana lub zmieniana
Tylko czytać
scan — pokazuje znalezione pliki
plan - Pokazuje plan podróży
duplicates — pokazuje dopasowania
Zmieniają pliki
apply - Przenosi pliki
undo — przywraca pliki na miejsce
~/safesort $ safesort plan ~/Downloads
5 move operations planned.
No files have been changed.

System plików po tym poleceniu pozostał taki sam — plan opisuje jedynie przyszłe ruchy. To rozróżnienie między "pokazem" a "zrobione" jest Główna idea całego projektu i wrócimy do niej więcej niż raz.

Co powinna umieć pierwsza wersja

Program powinien potrafić:

Jak powinien się zachowywać program:

Pierwszy lista w rozwoju nazywa się funkcjonalny Wymagania — co program robi. Drugi — niefunkcjonalne: nie «co», lecz «jak», jakie właściwości posiada zachowanie programu niezależnie od polecenia.

Czego nie zrobimy w pierwszej wersji

Aby ukończyć projekt i nie rozciągać go w nieskończoność, natychmiast ograniczmy zadanie:

Nie wchodzi w pierwszą wersjęDlaczego
Automatyczne usuwanie duplikatówUsuwanie danych bez wyraźnego potwierdzenia — ryzyko, a nie wygoda
GUILinia poleceń jest łatwiejsza do implementacji, testowania i wyjaśniania
Przesyłanie plików do chmuryProgram działa tylko z lokalnym systemem plików
Klasyfikacja według zawartości plikuKlasyfikacja przez rozszerzenie już rozwiązuje główny problem

Krótko

  • scan, plan i duplicates odczytują tylko system plików; apply sortuje pliki, a undo wykonuje ruch odwrotny.
  • "Pokaż plan" i "wykonaj plan" to różne etapy, a ta różnica definiuje całą architekturę programu.
  • Wymagania funkcjonalne — co robi program; niefunkcjonalne — jakie właściwości ma jego zachowanie.