Jak radzić sobie z filozofią ponownego wykorzystywania kodu?


10

Ciągle zastanawiam się nad ponownym użyciem kodu podczas rozpoczynania nowego projektu.

W jakim stopniu powinienem nadać kodowi wielokrotnego użytku?
Czy powinienem ograniczyć go do zakresu zastosowania, czy też powinienem umożliwić jego ponowne wykorzystanie poza projektem?

Czasami wydaje mi się, że wielokrotne użycie kodu może stać na drodze do prostej konstrukcji. Podziel się swoim zrozumieniem i podejściem do ponownego wykorzystania kodu.


Odpowiedzi:


21

Kod musi działać, zanim będzie można go ponownie użyć. Oznacza to, że projektowanie i (podstawowa) funkcja powinny pojawić się przed rozważeniem ponownego użycia kodu.

Dobrze jest myśleć o ponownym użyciu i ponownym użyciu komponentów, które już napisałeś. Ale czasami może być tak samo szybkie, jeśli nie szybsze, aby napisać kod i uruchomić go. Po rozwiązaniu pierwotnego problemu możesz przefakturować kod, aby był łatwiejszy do ponownego użycia.


2
Czy „był” w pierwszym zdaniu literówki „ma”?

@delnan - co to było? :-) Dzięki za złapanie tego.

9

Pamiętaj KISS i YAGNI:

Kod re-usability better to be consideredpo przygotowaniu dokumentu projektowego . Pozwoli ci to zobaczyć sekcję / części kodu, które zostaną potencjalnie zduplikowane.

Dlatego jeśli nie masz przejrzystego projektu, zastosuj podejście KISS i YAGNI w swojej pracy!


1

To z mojego doświadczenia, ale wciąż wierzę, że można go zastosować i jest zgodny z tym, o czym wspominał GlenH7 .

Pracuję między 3 firmami realizującymi różne projekty. Firmy są siostrami z pewnymi standardowymi praktykami i metodologią pracy, ale są również wyjątkowe pod wieloma względami. Powiedziawszy to, generalnie zaczynam każdy projekt od nowa i chcę po prostu go wykonać lub pokazać postępy. Następnie, jeśli napotkam scenariusz, w którym pamiętam fragment kodu lub funkcji, który napisałem dla poprzedniego projektu, zrobię jedną z dwóch rzeczy (zależnych od czasu):

  1. Najszybsza metoda
    Skopiuj poprzedni kod z drugiego projektu (nie mam dużo czasu) do mojego bieżącego projektu.
  2. Druga najszybsza metoda
    Skopiuj poprzedni kod i umieść go we wspólnej bibliotece, a następnie dołącz tę bibliotekę do bieżącego projektu (aby ułatwić przejście do przodu).

    2b. Jeśli dokonam zmian w innym (oryginalnym) projekcie, przebuduję go, aby używał nowej biblioteki [ale ogólnie nie zrobi tego, chyba że będę musiał ponownie dotknąć tego projektu].

Ostrzegaj, sprawdź, do cholery, ze wspólnych bibliotek. Wspólne biblioteki oznaczają tworzenie zależności. Zależności tworzą punkty awarii. Chociaż możesz potrzebować czegoś nieco poprawionego w bieżącej implementacji, nie wiesz, jak zmieni to wszystko przy użyciu tej biblioteki.


Po co używać jednej implementacji czegoś, skoro można mieć cztery lub pięć identycznych? Twoja „najszybsza” metoda jest najszybsza tylko w najbliższym czasie.
Caleb,

@Caleb: Zgoda. Nigdy nie mówiłem, że to eleganckie, że terminy są ostateczne. Podczas refaktora rozpoznam wiele projektów korzystających z tego samego kodu, przejrzę je i podzielę na własne biblioteki. Ale kiedy muszę to wyciągnąć za drzwi, kopiowanie-wklejanie działa. Daje mi to również elastyczność w modyfikowaniu tego projektu i pamiętam o tych zmianach, kiedy wybijam bibliotekę i chcę, aby była zarówno solidna, jak i elastyczna.
Brad Christie,

1

Czasami uważam, że kopiowanie i wklejanie kilku wierszy kodu jest lepszym rozwiązaniem. Nawet w ludzkim języku, kiedy chcesz wypowiedzieć zdanie, które wypowiedziałeś wcześniej, z niewielką odmianą, powtórzysz je z odmianą, ponieważ sprawia to mniej kłopotów każdemu.

Jeśli jednak Twój duży moduł musi być używany w nieco inny sposób niż nie obsługuje, nie klonuj go, aby zmodyfikować kilka linii, ponieważ jest bardzo prawdopodobne, że będziesz chciał rozszerzyć funkcjonalność zarówno bazy, jak i klonuj udział w przyszłości. Zamiast tego po prostu skonfiguruj go lub wyeksportuj funkcje, które zarówno baza, jak i klon udostępniają w innym module, z którego będą korzystać.


0

Nie przesadzaj. A jeśli nie jesteś pewien, trzymaj się zakresu aplikacji, dopóki nie napiszesz wystarczającej liczby projektów, aby zobaczyć, gdzie możesz ponownie użyć.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.