Przypuśćmy, że mam metodę instancji, która zawiera wiele zagnieżdżonych warunków. Jaki byłby dobry sposób na zamknięcie tego kodu? Umieścić w innej metodzie instancji tej samej klasy lub funkcji? Czy mógłbyś powiedzieć, dlaczego preferowane jest pewne podejście?

0
Bentley4 26 sierpień 2012, 14:21

2 odpowiedzi

Najlepsza odpowiedź

Jeśli funkcja jest używana tylko przez jedną klasę, a zwłaszcza jeśli moduł ma więcej klas z potencjalnie większą liczbą funkcji użyteczności (używanych tylko przez jedną klasę), może być nieco wyjaśnić rzeczy, jeśli zachowujesz funkcje jako metody statyczne zamiast tego, aby było oczywiste do której klasy należą. Ponadto, zautomatyzowane refaktory (przy użyciu E.G. Biblioteka liny lub Pycharm lub Pydev itp.) Następnie automatycznie przesuwa metodę statyczną wraz z klasą do miejsca, w którym klasa zostanie przeniesiona.

P.S. @staticmethod s, w przeciwieństwie do funkcji poziomu modułu, można poddalenia w podklasach, np. W przypadku formuły matematycznej, która nie zależy od obiektu, ale zależy od rodzaju obiektu.

0
Erik Kaplun 26 sierpień 2012, 13:33

Istnieją tu dwa różne pytania. Pierwszy to co robić z wieloma zagnieżdżonymi warunkami. Nie ma żadnej odpowiedniej odpowiedniej odpowiedzi: to zależy od stylu kodowania, w jaki sposób warunki interakcji, architektura programu i tak dalej. Spójrz na Ten programiści.se pytanie i Jeff Atwood's Blog Post dla niektórych pomysłów; Osobiście lubię

if not check1: return
code1

if not check2: return
code 2

...

Chociaż niektórzy ludzie sprzeciwiają się wielu punktom wyjścia.


Drugie pytanie brzmi, co zrobić z indywidualnymi funkcjami, jeśli piszesz zorientowany obiekt Python. Zwykła odpowiedź brzmi, aby umieścić je jako funkcje wewnątrz modułu zawierającego klasę, ponieważ nie ma wymogu przymocowania funkcji do określonej klasy. Jeśli chcesz, możesz dołączyć je w klasie jako metody statyczne.

0
Community 12 kwiecień 2017, 07:31