Wpis z mikrobloga

#programowanie #java #chwalesie W celu nauki Javy jako swój pierwszy program w tym języku stworzyłem interpreter języka Brainfuck. Źródła możecie ukraść tutaj. Moja prośba to zerknięcie na ten kod przez bardziej doświadczonych mirków/mirabelki i jakieś rady na przyszłość. Jeżeli kogoś w przyszłości by interesowały moje dziwne wytwory to subskrybujcie #bbpsuje
  • 8
  • Odpowiedz
@bigben93
Samej logice kodu się nie przyglądłem, ale mam mimo to kilka uwag ogólnych. Używaj na przyszłość maven/gradle. Ant ssie - na prawdę trudno poza uczelniami spotkać jeszcze antowe (rozwijane) projkty. Dodatkowo, są dobre narzędzia do zabawy z językami, choćby antlr - mógłby nieco uprościć pracę i jednocześnie pomógł w uproszczeniu przyszłej rozbudowy programu (o nowe języki)

każdą klasę/interfejs najlepiej twórz w osobnych plikach (Iface) - swoją drogą nazwa mogłaby być nieco bardziej znacząca - osobiście szedłbym gdzieś w stronę Stream oraz zamiast IfaceStd ConsoleStream - choć zastanawiałbym się nad sensem istnienia tych klas.

A metoda out(String) z CoffeeBF jest małym potworkiem. ( ͡
  • Odpowiedz
@franciss: Dzięki za odpowiedź. Dopiero zaczynam w Javie więc dałem to co NetBeans dał mi w standardzie (tutaj Ant). Na potrzeby tego projektu nie będę już tego zmieniał, ale w przyszłości użyje czegoś innego.

Z Iface faktycznie przyznaje, że nie miałem pomysłu jak to nazwać, a chciałem dodać interfejs, bo jest fajnym rozwiązaniem jakbym w przyszłości chciał podpiąć kod silnika pod jakieś inne wejście/wyjście niż konsola systemu. Co do klasy
  • Odpowiedz
@bigben93
Szczerze powiedziawszy nie wybrałbym netbeansa na swoje pierwsze IDE - wydaje mi się zbytnio skrojony pod JavaEE, ale to może tylko takie wrażenie, niewiele go używałem. Osobiście korzystam Intellij i Eclipse, choć tego pierwszego komuś początkującemu nie poleciłbym - jest zdecydowanie najbardziej kompletnym środowiskiem z wymienionych, ale wymaga nieco czasu żeby się nauczyć efektywnie nim obsługiwać.

Wracając do CR:

Co do klasy IfaceStd to chodzi ci o to abym rozdzielił na osobne pliki interfejs i jego
  • Odpowiedz
CoffeeBF miałoby tylko za zadanie uruchomienie programu (single responsibility rule), a stworzyłbym osobną klasę ładującą z pliku kod i wypisującą go gdzieś. Być może warto by było wyodrębnić tu jakiś interfejs (z metodą loadCode i print) i zrobić kilka implementacji takiego ładowania (z pliku, linii komend). Można się nawet pokusić o jakiś wzorzec projektowy (strategia?).


@franciss: Dzięki, ale takie coś ma sens raczej w większych projektach. W przypadku mojego prostego
  • Odpowiedz
@bigben93 użycie wzorców to być może zbyt wiele - zależy czy projekt będzie dalej rozwijany, ale wydzielenie klas względem tego czym się zajmują porządkuje kod i ułatwia jego zrozumienie. A o jakość kodu jednak w pierwszej kolejności powinniśmy dbać. Choć z drugiej strony być może jestem zbyt wielkim purystą,
  • Odpowiedz