2016-04-04 3 views
-2

Möglicherweise - Meinung basierte Frage, aber:Funktionen beiseite Klassen - Grausamkeit oder akzeptabel?

warum dies:

def func1(): 
    pass 
def func2(): 
    pass 

class BigClass: 
    def method1(self): 
     pass 
    def method1(self): 
     pass 
    def method1(self): 
     pass 

schlecht ist, aber dies:

class c1: 
    def func1(self): 
     pass 
class c2:  
    def func2(self): 
     pass 

class BigClass: 
    def method1(self): 
     pass 
    def method1(self): 
     pass 
    def method1(self): 
     pass 

ist gut?

Oder - es ist eine akzeptable Praxis?

Für mich - es sieht nur ein bisschen ... unstrukturiert, vielleicht? I.e. - einige kleine functions() beiseite große Classes. Vor allem - wenn sie eine Liste von Parametern haben, während Klassen in der Regel ein-zwei-Eltern-Namen haben.

Aber was ist mit einer wirklichen Bedeutung davon? Einige zusätzliche Sicherheit durch "tiefere" Datenkapselung? Etwas anderes?

Oder kein Unterschied?

+3

Alles hängt davon ab, was Sie tun. Sie müssen nicht alles in einer Klasse haben. Ich sehe nicht, was mit diesem ersten Beispiel falsch ist. Wo hast du gelesen, dass das schlecht war? – idjaw

Antwort

2

Es ist nichts falsch daran, einfache Funktionen anstelle von Klassen zu verwenden. Ich denke also nicht, dass Code, den Sie ursprünglich erwähnt haben, von Natur aus schlecht ist. Das Problem tritt nur auf, wenn Ihre Funktionen verschachtelt und kompliziert werden. Dann müssen Sie den Code in mehr Funktionen strukturieren, um ihn lesbarer zu machen. Aber dann haben Sie am Ende viele Funktionen, die Daten mit Argumenten teilen müssen, die die Lesbarkeit des Codes verringern. Das ist die Zeit, in der es sinnvoller wäre, den Code in einer Klasse zu strukturieren.

Dies ist nur einer der Vorteile der objektorientierten Programmierung. Glaub mir, es gibt viele andere. Ich habe viele Leute gesehen, die behaupten, dass Python-Code nicht objektorientiert sein muss, es ist ein "JAVAish" -Ansatz. Aber nichts könnte falscher sein, die Objektorientierung (oder ein anderes Programmiermuster) hat nichts mit einer bestimmten Sprache zu tun. Ich stimme zu, dass OOP nicht immer die beste Lösung für das Problem ist, aber die meiste Zeit ist es.

Verwandte Themen