Kod PHP/Morse'a do oceny

0

Można się naśmiewać, ale chciałbym wiedzieć z czego :)

Mini projekt do pobrania: https://github.com/ccwrc/dot_line_dot

Jest to zwykły tłumacz z naszego na kod Morse'a i odwrotnie. Na razie gotowy jest działający szkielet back-end. Wszelkie uwagi co zmienić, poprawić, przerobić mile widziane.

1

Wyrywkowo.

if ($lowerStringToTranslate[$i] === $humanChar) {
   $retString .= $morseChar;
   $retString .= " ";
} else {
   $retString .= " ";
}

Czyli co, spację dodajemy w obu przypadkach? No to zamiast duplikować tę linijkę w if i w else, może po prostu wyłączyć ją z warunkowej konstrukcji : )

if ($lowerStringToTranslate[$i] === $humanChar) {
   $retString .= $morseChar;
}
$retString .= " ";
strlen($stringToTranslate) > 10000)

Magiczna liczba, owe dziesięć tysięcy. Lepiej wydzielić ją do czytelnie nazwanej stałej.

Do tego wszystkie funkcje mają dość podobną konstrukcję i sporo kodu się powtarza. Rozważyłbym, czy nie da się tego zrefaktorować tak, by "szkielet" stał się reużywalny i żeby zmniejszyć poziom duplikacji.

0

Właściwie są tylko dwie funkcje, ta trzecia opisana jako wadliwa w komentarzu jest do wywalenia. Ale zachowałem ją (na razie) żeby napawać się swoim błędem ;)

"Czyli co, spację dodajemy w obu przypadkach? No to zamiast duplikować tę linijkę w if i w else, może po prostu wyłączyć ją z warunkowej konstrukcji : )"

  • spacja robi za pewnego rodzaju zabezpieczenie. Nie chcę na stronie skryptów, których nie napisałem

"Magiczna liczba, owe dziesięć tysięcy. Lepiej wydzielić ją do czytelnie nazwanej stałej."

  • pisana 'losowo' z palca, pomyślę.
0

functions.php

// not working correctly with multibyte string !

zobacz jaki masz ogrom funkcji w stylu mb_strtolower()

0
axelbest napisał(a):

functions.php

// not working correctly with multibyte string !

zobacz jaki masz ogrom funkcji w stylu mb_strtolower()

Co proponujesz?
Mi strtolower wydało się najszybsze (w użyciu, nie działaniu), bez tego musiałbym rozbudować tablicę, dodać jeszcze jeden warunek, albo zrobić 2 tablice tłumaczące zamiast jednej.

0

Przy dwóch funkcjach trudno zastosować nawet dobre dependency inversion i postawić na kompozycje. Ale gdybyś chciał apkę rozwinać, to możnaby było o tym pomyśleć

0

Kod się trochę pozmieniał a sama stronka została odpalona testowo pod adresem http://morsem.pl/

Wszelkie uwagi także dotyczące JS mile widziane.

0

zrób jeszcze jakiś front rwd w material design i będzie git (większe pola text)

1 użytkowników online, w tym zalogowanych: 0, gości: 1