Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Έστω ότι έχω έναν κώδικα έτσι:
 

class test:

   def do_something_1():

      . . .

   def do_something_2():

      . . .

   def do_something_3():

      . . .

Προσπαθώ κάθε function να την κάνω ξεχωριστό αρχείο και κάπως να την καλώ για να μειώσω τον χώρο της κλάσης που είναι πολλές γραμμές κώδικα. Οπότε έκανα το εξής: την do_something_1 την αφαίρεσα τελείως και την έκανα αρχείο, έτσι: do_something_1.py, οπότε στην κλάση στην θέση της function, έχω import do_something_1.py ,αλλά βαράει ο compiler/interpreter. Ακολούθησα αυτό το άρθρο: https://microeducate.tech/how-can-i-separate-functions-of-class-into-multiple-files/

με λίγο αυτοσχεδιασμό, επειδή θέλω να καλώ όλη την function... Καμιά ιδέα?

Δημοσ.

Είναι αρκετά λάθος αυτό που πας να κάνεις. Δημιουργεί πολλά προβλήματα που, προφανώς, δεν έχεις ιδέα ότι μπορεί να υπάρχουν. Η δικαιολογία "το αρχείο είναι μεγάλο" είναι από τις πιο λάθος που έχω ακούσει ποτέ μου και φυσικά και θα σου "βαρέσει" ο interpreter. 

Εάν, μία στις 100.000, το αρχείο είναι όντως τόσο μεγάλο (π.χ. πάνω από 5000 γραμμές κώδικα) τότε έχεις κάνει λάθος στον σχεδιασμό της κλάσης. 

TL;DR: Μην το κανεις. Είναι λάθος.-

  • Like 2
  • Moderators
Δημοσ.

Το να μεταφέρεις αλλού τον κώδικα όχι μόνο δεν σου λύνει κανένα πρόβλημα αλλά σου δίνει την ψευδαίσθηση ότι ο κώδικάς σου είναι "καλύτερος" σε σχέση με πριν. Η ποιότητα του κώδικα δε μετριέται με το πόσα κιλά κώδικας υπάρχει σε κάθε αρχείο ούτε τα προβλήματα ενός κακογραμμένου codebase λύνονται με ζογκλερικά. Αν πιστεύεις ότι κάτι είναι πιο περίπλοκο και πολύπλοκο απ' ό,τι χρειάζεται, τότε κάτσε και γράψε το απ' την αρχή (ή, αν αυτό δε γίνεται, δες πώς μπορείς να το βελτιώσεις).  

  • Like 1
Δημοσ. (επεξεργασμένο)
14 λεπτά πριν, Kercyn είπε

Το να μεταφέρεις αλλού τον κώδικα όχι μόνο δεν σου λύνει κανένα πρόβλημα αλλά σου δίνει την ψευδαίσθηση ότι ο κώδικάς σου είναι "καλύτερος" σε σχέση με πριν. Η ποιότητα του κώδικα δε μετριέται με το πόσα κιλά κώδικας υπάρχει σε κάθε αρχείο ούτε τα προβλήματα ενός κακογραμμένου codebase λύνονται με ζογκλερικά. Αν πιστεύεις ότι κάτι είναι πιο περίπλοκο και πολύπλοκο απ' ό,τι χρειάζεται, τότε κάτσε και γράψε το απ' την αρχή (ή, αν αυτό δε γίνεται, δες πώς μπορείς να το βελτιώσεις).  

Οκ, το καταλαβαίνω...αλλά επειδή δεν έχω χρόνο υπάρχει κάποιο ζουγκλερικό για αυτό??

Επεξ/σία από pi314
  • Moderators
Δημοσ.
14 λεπτά πριν, pi314 είπε

Οκ, το καταλαβαίνω...αλλά επειδή δεν έχω χρόνο υπάρχει κάποιο ζουγκλερικό για αυτό??

Δεν ξέρω γιατί θες να σπαταλήσεις χρόνο για να κάνεις τον κώδικά σου χειρότερο, αλλά δυστυχώς δεν έχω ασχοληθεί με python, οπότε δε μπορώ να σε βοηθήσω με τα τεχνικά.

Δημοσ.
59 λεπτά πριν, pi314 είπε

Οκ, το καταλαβαίνω...αλλά επειδή δεν έχω χρόνο υπάρχει κάποιο ζουγκλερικό για αυτό??

Αυτό που πας να κάνεις είναι λάθος. Όχι γιατί το λέει ένας τυχαίος σε ένα forum, αλλά γιατί δεν λειτουργεί έτσι το θέμα. 

Δημοσ.

Αν έχεις φτάσει σε σημείο να χρειάζεσαι να σπάσεις τα functions μιας κλάσης σε διαφορετικά αρχεία  τότε μάλλον κάτι δεν είναι σωστό σε επίπεδο design

Μήπως η κλαση σου μπορεί να σπάσει σε υποκλάσεις...είτε λόγω κληρονομικότητας είτε...πολλά

Εαν αυτά δεν ισχύουν πιθανόν να χρειάζεσαι μια προσέγγιση του τύπου ...βρίσκω κοινά κομμάτια κώδικα και τα οδηγώ σε helper function/class/singleton....

Δημοσ. (επεξεργασμένο)

Από ότι βλέπω στα  διάφορα αποτελέσματα του google, με inheritance ΜΑΛΛΟΝ γίνεται δουλειά...

Επεξ/σία από pi314

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...