Dawno temu dodaliśmy funkcję, w której nasi użytkownicy mogli „zaakceptować” obraz po dodaniu go do kolejki przepływu pracy. Okazuje się, że użyliśmy niewłaściwego terminu, a użytkownicy faktycznie „Zatwierdzili” obraz.
Zmiana Akceptuj, aby zatwierdzić w naszym interfejsie jest łatwa, wystarczy zastąpić jedno słowo. Ale zaprogramowaliśmy wszystkie warstwy słowem „akceptuj”, od nazwy klasy CSS po wartości bazy danych.
- Klasa CSS, która zmienia kolor przycisku na zielony: „.accepted”;
- Metoda modelowa, która weryfikuje i wiąże atrybut klasy w węźle DOM: „isAccepted”;
- Atrybut statusu JavaScript: Tablica z „nie sprawdzone”, „zaakceptowane” i „opublikowane”;
- Kolumna stanu MySQL: ENUM z „nie sprawdzone”, „zaakceptowane” i „opublikowane”;
- Nazwy testowe;
Zastępowanie większości przypadków akceptacji do zatwierdzenia jest trywialne (szczególnie gdy masz testy). Nieco trudniej jest migrować dane, zwłaszcza, że należy je zsynchronizować z wdrożeniem.
Ten konkretny przypadek jest prosty, ale w trakcie mojej kariery miałem do czynienia z podobnymi, ale bardziej złożonymi sprawami. Kiedy nazwa pliku również ulega zmianie i wdrażanie odbywa się na kilkudziesięciu serwerach, lub gdy w grę wchodzi buforowanie proxy, memcached i mysql.
Pozostawienie „zaakceptowanych” na każdej innej warstwie oprócz interfejsu jest złym pomysłem, ponieważ nowi programiści dołączający do zespołu mogą nie poznać historycznych powodów, dla których doprowadziła do tej decyzji, i chociaż akceptują -> zatwierdzają, są bliskimi słowami pod względem znaczenia, jeśli przemianowano go na „w kolejce na kolejne spotkanie menedżerskie”, to z pewnością nie miałoby sensu. I czuję, że jeśli pójdziemy na kompromis tu i tam, w kilku iteracjach koncepcje interfejsu użytkownika nie będą miały wpływu na elementy wewnętrzne systemu, a ja z pewnością nie chcę pracować w systemie, w którym połowa danych wyjściowych nie ma połączenia z jego wnętrznościami.
Czy zawsze zmieniasz nazwę wszystkiego w razie potrzeby? Jeśli tak się stało i zdecydowałeś, że kompromis nie był wart, to czy wrócił cię ugryźć? Czy komentarz kodu lub dokumentacja programisty wystarczą, aby uniknąć tego problemu?