kurokokoro Δημοσ. 22 Απριλίου 2019 Δημοσ. 22 Απριλίου 2019 Ξέρει κανένας κάποιο site με ασκήσεις για refactoring;
ParhsG Δημοσ. 22 Απριλίου 2019 Δημοσ. 22 Απριλίου 2019 https://refactoring.guru Ασκησεις δε ξέρω αλλα εχει υλικο
vadou Δημοσ. 22 Απριλίου 2019 Δημοσ. 22 Απριλίου 2019 Πες μου σε τι γλώσσα θέλεις και πόσα κιλά κώδικα χρειάζεσαι να σου στείλω άπειρα projects που "θα γινόταν refactoring στο τέλος" 😛 Πέρα από την πλάκα, το refactoring, δεν είναι κάτι συγκεκριμένο. Στην ουσία είναι διάφορες αλλαγές που κάνεις ώστε να κάνεις πιο efficient και/ή πιο readable τον κώδικα που έχεις γράψει. Τουλάχιστον, με αυτή την έννοια το γνωρίζω/χρησιμοποιώ εγώ. Αν εννοείς κάτι άλλο sorry για το offtopic. 1
pmav99 Δημοσ. 22 Απριλίου 2019 Δημοσ. 22 Απριλίου 2019 (επεξεργασμένο) Το κλασσικό βιβλίο είναι του Fowler: https://refactoring.com/ 2 hours ago, vadou said: Πέρα από την πλάκα, το refactoring, δεν είναι κάτι συγκεκριμένο. O Fowler πάλι λέει ότι είναι πολύ συγκεκριμένο: Quote Refactoring is a disciplined technique for restructuring an existing body of code, altering its internal structure without changing its external behavior. Πρακτικά, το refactoring προϋποθέτει να έχεις tests, για να μπορείς να ελέγξεις ότι όντως δεν έχεις αλλάξει συμπεριφορά. Επεξ/σία 22 Απριλίου 2019 από pmav99 1
kurokokoro Δημοσ. 22 Απριλίου 2019 Μέλος Δημοσ. 22 Απριλίου 2019 Αυτό που ψάχνω είναι κάτι σε στυλ HackerRank που σου δίνει την δυνατότητα να γράψεις κώδικα σε δικό τους ide στον browser ή κάποιες ασκήσεις για να τις κάνεις μονος σου. Αλλά σαν συνέχεια της ερώτησης μου, σε επαγγελματικό περιβάλλον πόσο παίζει να κάνεις refactoring τον κώδικα; Δηλαδή, πόσο συχνά μπορεί να κάνεις refactor σε κάποο project;
vadou Δημοσ. 22 Απριλίου 2019 Δημοσ. 22 Απριλίου 2019 (επεξεργασμένο) @pmav99 Δεν έχω διαβάσει το βιβλίο που αναφέρεις, όσα έχω μάθει σχετικά με το θέμα είναι εμπειρικά, θα προσπαθήσω όμως να το διαβάσω όταν βρω χρόνο. Διαβάζοντας το front page δε βλέπω κάπου να αναφέρει ότι είναι κάτι συγκεκριμένο όπως το εννοώ. Ενδεχομένως να αναφέρει κάποιους γενικούς κανόνες, αλλά η κάθε περίπτωση είναι διαφορετική στον τρόπο που θα βελτιστοποιήσεις τον κώδικα. Ο ορισμός που δίνει δεν είναι κάτι διαφορετικό από αυτό που γράφω παραπάνω αν και στο τέλος κάνει ένα διαχωρισμό μεταξύ "refactoring" και "restructuring", κάτι το οποίο μάλλον στο δικό μου μυαλό δεν έχω διαχωρίσει. Τα γράφει και αυτός λίγο μπερδεμένα... Στην αρχή δηλαδή, "Refactoring is a disciplined technique for restructuring " και στο τέλος "Refactoring isn't another word for cleaning up code - it specifically defines one technique for improving the health of a code-base. I use "restructuring" as a more general term for reorganizing code that may incorporate other techniques." @kurokokoro Όλα είναι σχετικά. Σε γενικές γραμμές σχεδόν πάντα (αν όχι πάντα), χρειάζεται refactoring. Είτε γιατί έφτιαξες κάτι στα γρήγορα και θέλεις να το φτιάξεις καλύτερα όταν βρεις χρόνο, είτε γιατί αλλάξανε κάποια δεδομένα στο project από τη στιγμή που άρχισε μέχρι τη στιγμή που τελείωσε κλπ Το κακό είναι ότι σχεδόν ποτέ δεν έχεις χρόνο για σωστό refactoring (ανάλογα πάντα με το που και τι δουλεύεις), οπότε αυτό που έγραψα παραπάνω για projects στα οποία θα γινόταν refactoring στο τέλος, είναι "black humour" κατά μια έννοια Επεξ/σία 22 Απριλίου 2019 από vadou
Επισκέπτης Δημοσ. 22 Απριλίου 2019 Δημοσ. 22 Απριλίου 2019 2 ώρες πριν, kurokokoro είπε Αλλά σαν συνέχεια της ερώτησης μου, σε επαγγελματικό περιβάλλον πόσο παίζει να κάνεις refactoring τον κώδικα; Δηλαδή, πόσο συχνά μπορεί να κάνεις refactor σε κάποο project; Μια και καλή, όταν περνάς από το demo όπου όλα δουλεύουν στο περίπου σε μια πιο "επαγγελματική" έκδοση. Μετά δεν κάνεις ποτέ refactoring σε όλο το code base, απλά κατά καιρούς αλλάζεις τμήματα που δεν δουλεύουν όπως θα έπρεπε.
ParhsG Δημοσ. 22 Απριλίου 2019 Δημοσ. 22 Απριλίου 2019 12 λεπτά πριν, elorant είπε Μια και καλή, όταν περνάς από το demo όπου όλα δουλεύουν στο περίπου σε μια πιο "επαγγελματική" έκδοση. Μετά δεν κάνεις ποτέ refactoring σε όλο το code base, απλά κατά καιρούς αλλάζεις τμήματα που δεν δουλεύουν όπως θα έπρεπε. Σε πολυ μεγάλη εταιρια πάντως ξέρω πάνε σε complete rewrite. Διαφερει βεβαια απο το refactoring αλλα ειναι και αυτο νομιζω μιαεπιλογη
kurokokoro Δημοσ. 23 Απριλίου 2019 Μέλος Δημοσ. 23 Απριλίου 2019 Αν πρέπει να κάνεις complete rewrite το code base σου τότε σημαίνει ή πως κάτι έχει πάει εντελώς λάθος ή θες να αλλάξεις τεχνολογία. Ένα project 3+ ετών δεν είναι εύκολο να το κάνεις complete rewrite. Έχει κόστος και μάλιστα από αυτό το κόστος που ο πελάτης μπορεί και να μην καταλάβει την διαφορά στο τέλος.
marios28 Δημοσ. 23 Απριλίου 2019 Δημοσ. 23 Απριλίου 2019 14 ώρες πριν, kurokokoro είπε Δηλαδή, πόσο συχνά μπορεί να κάνεις refactor σε κάποο project; Νομίζω εξαρτάται από τον τύπο του project και τις τεχνολογίες/πλατφόρμες που χρησιμοποιούνται. Συνεχώς προστίθενται -αρκετά συχνά- νέα χαρακτηριστικά, συνεχώς εξελίσσεται το project ή έχει φτάσει σε ένα σταθερό επίπεδο και δεν υπάρχει λόγος για προσθήκη νέων λειτουργιών πολύ συχνά; Η τεχνολογία/πλατφόρμα είναι σε φάση συνεχούς (και ίσως γρήγορης) ανάπτυξης ή πρόκειται για κάτι «σταθερό» (όσο μπορεί να χαρακτηριστεί μια πλατφόρμα/τεχνολογία «σταθερή») Αν ναι και στις δύο ερωτήσεις, το refactoring είναι μια συνεχής διαδικασία και δε νομίζω πως μπορεί να διαχωριστεί ή να θεωρηθεί ως μια extra διαδικασία κατά την ανάπτυξη/συντήρηση. 5 ώρες πριν, kurokokoro είπε Αν πρέπει να κάνεις complete rewrite το code base σου τότε σημαίνει ή πως κάτι έχει πάει εντελώς λάθος ή θες να αλλάξεις τεχνολογία. Ένα project 3+ ετών δεν είναι εύκολο να το κάνεις complete rewrite. Έχει κόστος και μάλιστα από αυτό το κόστος που ο πελάτης μπορεί και να μην καταλάβει την διαφορά στο τέλος. Νομίζω το complete rewrite ισχύει όπως παραπάνω (εκτός από την περίπτωση αλλαγής τεχνολογίας). Δεν είναι εύκολο, αλλά ίσως είναι και η καλύτερη λύση σε κάποιες περιπτώσεις. Βάσει των παραπάνω κάποιοι λόγοι: α) έχουν αλλάξει αρκετά πράγματα που δεν είναι εύκολο να προστεθούν νέα χαρακτηριστικά χωρίς εκτενές refactoring και συμμάζεμα του κώδικα, β) προστίθενται αρκετά συχνά νέα χαρακτηριστικά ή μελλοντικά δεν είναι δυνατόν να προστεθούν χωρίς απαραίτητες αλλαγές. γ) μπορεί να μην είναι ιδανικός ο αρχικός σχεδιασμός, γιατί στην πορεία το project μπορεί να πάρει διαφορετική μορφή δ) η εμπειρία παίζει το ρόλο της καθώς με την «τριβή» καταλαβαίνεις ότι τα πράγματα θα ήταν αποδοτικότερα αν ήταν διαφορετικά και κυρίως πιο εύκολα συντηρήσιμα. Φυσικά είναι «απελπισία» το γράψιμο από την αρχή, οπότε μία λύση είναι το συνεχές (και τμηματικό) refactoring. 1
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα