Witam,
Postanowiłem napisać swoją wersje "Szyfru Cezara", kod który stworzyłem działa, i spełnia wymagania które sobie postawiłem(obsługa wielkich i małych liter, możliwość wyboru przesunięcia, odpowiednia walidacja danych).
Sam kod postanowiłem tworzyć w taki sposób, że przejdę przez kilka możliwych wersji tego kodu, tzn zacznę od jednego pliku w którym wszystko oparte jest na funkcjach, jako "drugi poziom" postanowiłem umieścić logikę szyfrowania w klasie w oddzielnym pliku, trzecim krokiem jest użycie samego ES6Modules i finalna wersja projektu ma używać jakiegoś bundlera np Parcel'a.
Obecnie jestem na "drugim poziomie", kod działa, jednak ja nie jestem co do niego przekonany. Czy to tak ma wyglądać? Klasa w której obsługuje działanie szyfrowania, a na podstawie tej klasy w "głównym pliku"(index.js) tworze nowy obiekt i wywołuje jego metodę która jest odpowiedzialna za szyfrowanie przekazując jej niezbędne argumenty? Rozumiem, że w przypadku tego podejścia jeżeli chciałbym dodać kolejną funkcjonalność np zegar to stworzenie nowego pliku z klasą np Watch, umieszczenie w nim logiki zegara, a następnie w stworzenie nowego obiektu na podstawie Watch w "głównym pliku" jest okey?
I jeszcze jedno pytanie, czy dodanie 'static' do metod pomocniczych(czyli wszystkich poza getCesar) jest ok? Miałoby to na celu uniemożliwienie dostępu do tych pomocniczych metod z poziomu obiektu, przez co ktoś kto używałby obiektu stworzonego na podstawie tej klasy miałby dostęp tylko do głównej metody, która jest odpowiedzialna za szyfrowanie, a np do metody sprawdzającej wielkość liter już nie.
Dodatkowo prosiłbym o ocenę całości projektu, wszelkie uwagi mile widziane.
Pozdrawiam
LINKI