2008-12-31 11 views
5

Po zapytaniu organising my Python project, a następnie calling from a parent file in Python wydarzyło mi się, że o wiele łatwiej będzie umieścić cały mój kod w jednym pliku (dane będą czytane na zewnątrz).Cały kod w jednym pliku

Zawsze myślałem, że to była zła organizacja projektu, ale wydaje się być najprostszym sposobem radzenia sobie z problemami, myślę będę twarz. Czy po prostu dostałem zły koniec kija z liczbą plików lub czy nie widziałem jakiegoś świetnego przewodnika po dużych (dla mnie) projektach?

+0

Czy jesteś jedyną osobą, która będzie pracować nad kodem w tym samym czasie? –

+0

Tak, więc dlaczego to mi się wydaje, że może to być praktyczny pomysł. Gdybym był jeszcze 1 osobą, nie brałbym pod uwagę tej opcji. – Teifion

Odpowiedz

12

Jeśli planujesz używać jakichkolwiek SCM wtedy będą przykręcone. Posiadanie jednego pliku jest gwarantowanym sposobem na przeprowadzenie wielu kolizji i scaleń, które będą wymagały długiego czasu.

Trzymaj się konwencji i rozbijaj swoje pliki. Jeśli nie ma nic lepszego niż uratować faceta, który pewnego dnia będzie musiał zachować kod ...

+1

+1 - Zgadzam się z punktem SCM. Jest to kompromis lub długofalowa inwestycja tutaj. Projekty oprogramowania nie są dziedzictwem pojedynczego programisty. Weź teraz skrót i będziesz musiał zapłacić później. Więc lepiej podejmij teraz trudną decyzję i trochę bólu. W każdym razie jest to dodanie do umiejętności organizacji kodu. –

+1

Um, każdy przyzwoity SCM powinien być w stanie wygodnie radzić sobie ze zmianami w tym samym pliku, szczególnie gdy jest tylko osoba, która zamierza go edytować. Nawet najstarszy istniejący, jaki znam - RCS - działa dobrze z jednym plikiem. – ShreevatsaR

+0

"jest tylko osoba, która ma zamiar ją edytować", czy to też będzie postępować? Czy nie jest to rozsądne założenie? chyba że jest to projekt uczelniany, który zakończy się po złożeniu. –

4

Jeśli twój kod będzie cały czas działał razem i nie jest przydatny osobno, nie ma nic złego w utrzymaniu wszystkiego w jednym pliku. Mogę myśleć o co najmniej popularnym pakiecie (BeautifulSoup), który to robi. Pewnie ułatwia to instalację.

Oczywiście, jeśli wydaje się, że przydałoby się, że możesz użyć części kodu z innym projektem, lub jeśli kwestia konserwacji zaczyna być problemem, to martw się o inną organizację projektu.

Wydaje mi się od pytań, jakie zadawał ostatnio, że jesteś martwiąc się o tym wszystkim nieco przedwcześnie. Często dla mnie tego rodzaju problemy są lepiej rozwiązywane nieco później w rozwiązaniu. Zwłaszcza w przypadku mniejszych projektów, moim celem jest uzyskanie rozwiązania, które jest prawidłowe, i , a następnie optymalne.

+0

Zbliżam się do końca projekt, który waży 11 tys. linii kodu i był tak łatwy, ponieważ zorganizowałem go naprawdę dobrze.To było w PHP, pomyślałem, że powinienem zrobić to samo tutaj, aby ułatwić to zadanie :) – Teifion

+0

emerge, który jest głównym programem menadżera pakietów Gentoo Linux, to pojedynczy plik składający się z ~ 7000 linii kodu Pythona. –

2

Zawsze jest to teraz werset, a następnie argument. Jeśli jesteś pod bronią, aby to zrobić, zrób to. Kontrola źródła będzie później problemem, ponieważ w wielu przypadkach nie ma czarno-białej odpowiedzi. Musisz być odpowiedzialny zarówno za swój termin, jak i długoterminową konserwację kodu.

+0

Dobra fraza podsumowująca! Praktyki, które ułatwiają szybkie pierwsze cięcie, często nie są tymi, które wspierają długoterminową konserwację i ponowne wykorzystanie. –

2

Jeśli to najlepszy sposób, aby to zorganizować, prawdopodobnie popełnisz błąd.

Jeśli jest więcej niż tylko programem zabawek lub prostego skryptu, a następnie należy podzielić ją na oddzielne pliki, itd. Jest to jedyny rozsądny sposób to zrobić. Kiedy twój projekt będzie na tyle duży, że będziesz potrzebował pomocy kogoś innego, to ułatwi to SCM.

Dodatkowo, prędzej czy później będziesz musiał dodać osobne narzędzie do projektu, który będzie potrzebował pewne wspólne CODE/struktur. Znacznie łatwiej to zrobić, jeśli masz oddzielne pliki źródłowe, niż jeśli masz tylko jeden duży.

2

Od Calling from a parent file in Python oznacza poważne problemy projektowe, powiedziałbym, że masz dwie możliwości.

  1. Nie masz moduł biblioteki próby wywołania z powrotem do głównego. Będziesz musiał przerobić rzeczy, żeby to naprawić.

    [Zaimportowany składnik wywołujący program główny jest nieprawidłową zależnością. Python go nie obsługuje, ponieważ jest to kiepski projekt.]

  2. Umieść wszystko w jednym pliku, dopóki nie znajdziesz lepszego projektu z właściwymi zależnościami jednokierunkowymi. Będziesz musiał przepisać go, aby rozwiązać problemy z zależnościami.

Moduł (pojedynczy plik) powinien być logicznym fragmentem powiązanego kodu. Nie wszystko. Nie jest to definicja jednej klasy. Istnieje średni poziom modułowości.

Dodatkowo powinien istnieć odpowiedni jednokierunkowy wykres zależności od programu głównego do komponentów (które NIE zależą od programu głównego) do bibliotek narzędziowych i co nie (które nie wiedzą o komponentach LUB programie głównym .

Circular (lub wzajemne) Zależności często wskazywać na problem projektowania. oddzwaniania jest jedno wyjście z problemu. Innym sposobem jest rozłożenie okrągłych elementów, aby uzyskać odpowiedni wykres jednokierunkową.

2

patrząc na wcześniejsze pytania powiedziałbym cały kod w jednym pliku byłby dobrym pośrednim stanem w drodze do com plete refaktoryzacja twojego projektu. Aby to zrobić, potrzebujesz zestawu testów regresji , aby upewnić się, że nie przerwiesz projektu podczas jego refaktoryzacji.

Po wszystkim kod jest w jednym pliku, proponuję iteracji na:

  1. zidentyfikować małą grupę klas współzależnych.

  2. Wyciągnij te klasy do osobnego pliku.

  3. Dodaj test jednostki dla nowego oddzielnego pliku.

  4. Ponowna ocena całego projektu.

W zależności od wielkości projektu, nie powinno to zająć zbyt wiele powtórzeń, aby osiągnąć coś rozsądnego.

Powiązane problemy