Archive for Maj 2007

Copy and Paste, a jakość kodu. Część druga

30 Maj 2007

Destrukcyjna funkcjonalność Copy & Paste coraz bardziej mnie przeraża…

Od czasu ostatniego wpisu, uważnie obserwuję temat i już parę razy złapałem siebie i innych, na bezrefleksyjnym kopiowaniu kodu…

W moim wypadku, była to, co prawda, tylko jedna linia kodu formatująca bieżącą datę na potrzeby zapytania SQL, ale:

  • Kopiowaną linię kodu napisałem dawno temu, gdy dopiero poznawałem używany w produkcie język programowania i aby uzyskać bieżącą datę, użyłem funkcji zwracającej bieżącą datę i czas, a ze zwróconej wartości obcinałem czas (przez formatowanie wartości do postaci czystej daty).
  • Teraz wiem, że istnieje funkcja, która zwraca bieżącą datę, więc nie trzeba było niczego obcinać i formatować.
  • Właściwa implementacja nie powodowała błędów wywołanych przez ustawienia regionalne (różna kolejność dnia i miesiąca w dacie w zależności od ustawień regionalnych).

A inne zaobserwowane przypadki to:

  • Kopiowanie kodu wykonującego zapis danych z formularza do bazy (zmieniał się tylko typ zapisywanej wartości), który w nieoptymalny sposób, odwoływał się do bazy danych.
  • Kopiowanie kodu pokazującego okno z komunikatem — problem był tylko w tym, że na początku (stałym) komunikatu była literówka…
  • Skopiowanie kodu pokazującego na stronie WWW formularz oraz kodu zapisującego dane z tego formularza. Kopista ograniczył się do dodania nowych pól na formularzu, ale, pracując pod presją czasu, zapomniał o modyfikacji kodu zapisującego dane z formularza w bazie danych — czytaj uwzględnieniu przez zapis nowych pól.

Możliwości tworzenia i powielania błędów stworzone przez funkcję Copy & Paste są naprawdę porażające… Wiem. Zawsze można zrzucić winę na kopistę, ale łatwość użycia funkcji Copy & Paste do tworzenia nowego kodu jest zbyt kusząca, aby z niej nie korzystać dla większości z programistów i niestety, także, deweloperów.

Podrzuciłem ten temat na forum strony Marka Rafałowicza.