Co stworzymy: SafeSort
Program, który porządkuje pliki — najpierw pokazuje, co zrobi, a dopiero potem wykonuje to na polecenie.
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.
Na początku program pokazuje tylko to, co ma zrobić. Pliki przeniesienia może być tylko osobnym, wyraźnie nazwanym poleceniem:
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ć:
- wyświetlają znalezione pliki posegregowane według kategorii;
- pokazać plan przyszłych ruchów bez żadnych zmian;
- wykonywać ruchy tylko na wyraźne polecenie;
- znaleźć pliki o tej samej treści;
- cofnąć ostatnią wykonaną operację.
Jak powinien się zachowywać program:
- Nie modyfikuj plików bez wyraźnego polecenia.
- nie nadpisują istniejącego pliku bezszelestnie;
- ten sam wejście daje ten sam plan, nie ma tu losowości;
- całe przetwarzanie odbywa się lokalnie, bez sieci;
- logikę można sprawdzić automatycznymi testami, nie dotykając prawdziwych plików.
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ów | Usuwanie danych bez wyraźnego potwierdzenia — ryzyko, a nie wygoda |
| GUI | Linia poleceń jest łatwiejsza do implementacji, testowania i wyjaśniania |
| Przesyłanie plików do chmury | Program działa tylko z lokalnym systemem plików |
| Klasyfikacja według zawartości pliku | Klasyfikacja 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.