Απλές πρακτικές για καθαρό και διατηρήσιμο κώδικα

VN:F [1.9.22_1171]
Rating: 5.0/5 (4 votes cast)
FavoriteLoadingΠροσθήκη στα Αγαπημένα μου
25/03/2013 από
infogeek

Είναι κοινό μυστικό στον ελληνικό χώρο είναι, ότι είμαστε τσαπατσούληδες μέχρι αηδίας! Οι πελάτες στον χώρο του software, είτε μιλάμε για εμπορικές εφαρμογές γραφείου, είτε για web, μας δυσκολεύουν πολύ περισσότερο από όσο πρέπει και μας βγάζουν από τα νερά μας! Ο βασικός λόγος είναι ότι δεν ξέρουν τι να ζητήσουν και πως! Καθώς επίσης και ότι μερικές φορές όταν μας καλούν να υλοποιήσουμε μία ιδέα τους,  δεν ξέρουν κι αυτοί το εύρος της λειτουργικότητας της!

Η γνώμη μου είναι ότι αν δείτε ότι συμβαίνει κάτι τέτοιο, και δεν έχετε κάποιο συμφωνητικό που να σας προστατεύει από τέτοιου είδους μεταχείριση. Αλλά βασίζεστε στην καλή πίστη, που έτσι κι αλλιώς είναι αναγκαίο για την δημιουργία μίας συνεργασίας. Θα πρέπει να πείτε στον πελάτη, εξ αρχής να δοκιμάσουμε την ιδέα της μακέτας! Και δεν εννοώ μακέτα, να ζωγραφίσουμε πως θα είναι η εφαρμογή. Αλλά ένα βήμα παραπάνω… Να χρησιμοποιήσουμε την εφαρμογή με μολύβι και χαρτί! Είναι βασικός παράγοντας στο design, και στην χώρα μας, δεν είναι καθόλου γνωστή!

Έτσι θα μαζέψουμε τα χαρακτηριστικά που ζητάει ο πελάτης, πριν μας ζητήσει τριακόσια revisions!!! Οι διορθώσεις, δεν είναι από μόνες τους κακές, ωστόσο, αν κάποιος ζητήσει ένα χαρακτηριστικό, το οποίο ο παρών κώδικας δεν το υποστηρίζει. Θα αναγκαστούμε να αλλάξουμε ίσως πολύ βασικά πράγματα στον κώδικα, με αποτέλεσμα να θυσιάσουμε κάθε φορά λίγο από τη καλή λειτουργία που είχαμε πετύχει.

Ωστόσο, αυτό δεν το αποφεύγουμε πάντα. Είτε γιατί είναι προσωπικό μας project και γεμίζουμε σημειώσεις το κώδικα, με πράγματα που θα θέλαμε, που πρέπει να βάλουμε κτλ. Είτε ξυπνάμε κάποιο πρωί και λέμε, α για να αλλάξουμε λίγο αυτό το κομμάτι, χωρίς να θυμόμαστε γιατί το κάναμε αυτό εξ αρχής! Όλα αυτά καταλήγουν σε κακό κώδικα. Κώδικα που σπάει εύκολα και φυσικά bugs που θα μας πάρουν πολύ περισσότερο να διορθωθούν από τον ίδιο τον κώδικα, αν δε σταματήσουμε να σκεφτόμαστε με την Ελληνική μας, παραδοσιακή, μπακάλικη λογική!

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

Οι ονομασίες (functions, μεταβλητές) πρέπει να είναι πάντα περιγραφικές και σύντομες! Χρησιμοποιούμε πάντα μία συγκεκριμένη δομή στην ονομασία. Υπάρχουν πολλές τεχνικές ονομασίας, οι πιο διαδεδομένες είναι το Pascal case (HelloWorld), και το camel case (helloWorld). Στην ουσία όμως, αυτό που μετράει είναι να διατηρείται η ίδια λογική σε όλο το μήκος τους κώδικα.

Κάθε function, θα κάνει μόνο ένα πράγμα, και θα παράγει μόνο ένα αποτέλεσμα! Δεν βοηθάει μόνο στη συστηματοποίηση της λογικής, αλλά και στην αποφυγή bugs και την γρήγορη διόρθωση τους! Στην περίπτωση συνάρτησης void, που δεν επιστρέφει τίποτα, αλλά πχ τυπώνει κάτι στην οθόνη. Προσέχουμε να αφαιρέσουμε πιθανούς υπολογισμούς και να τους βάλουμε σε ξεχωριστές συναρτήσεις. Αυτό βέβαια είναι στην κρίση μας και στο πόσο κολλάει η λογική των υπολογισμών μαζί. Αν διακινδυνεύουμε να γεμίσουμε πολλές μικρές συναρτήσεις, προφανώς δεν βοηθάει ο διαμοιρασμός των λειτουργιών.

Δε μαζεύουμε πολύ κώδικα, σε ένα αρχείο, αν δούμε ότι σπαταλάμε χρόνο στο scroll χωρίζουμε τον κώδικα σε διακριτά κομμάτια και έπειτα σε αρχεία με σύντομη και περιγραφική ονομασία, ώστε να έχουμε πρόσβαση στον κατάλληλο κώδικα μέσα σε δύο scroll max! (Εξαιρούνται περιπτώσεις καθαρής css και html).

Ακολουθούμε πρακτικές

Σταματάμε να δημιουργούμε τη δομή του κώδικα στην πορεία, χρησιμοποιούμε ως εργαλεία τις πρακτικές, τα design patterns. Δεν σκεφτόμαστε πρώτα,  πως θα γράψω τον κώδικα, αλλά τι pattern μπορώ να χρησιμοποιήσω!

Δεν σπαταλάμε χρόνο, τον χρησιμοποιούμε σωστά!

Φροντίζουμε να παίρνουμε τον χρόνο που χρειάζόμαστε, ότι κι αν σημαίνει αυτό, γκρίνιες από τους πελάτες κτλ! Αλλά δε γράφουμε κώδικα που ξέρουμε ότι θα χρειαστεί να αλλάξει (τουλάχιστο σύντομα). Ο χρόνος πρέπει να αφιερώνεται σε ποιοτική δουλειά και όχι σε απροσεξίες και σφάλματα οργάνωσης! Οι πελάτες σε όλο τον κόσμο είναι απαιτητικοί, αλλά εμείς είμαστε υποχρεωμένοι να παράγουμε ένα άριστο προϊόν. Είναι πολύ  χειρότερο να παραδώσουμε ένα προϊόν γεμάτο bugs, από το να αυξήσουμε τον χρόνο παραγωγής. Κυρίως, αν το συγκεκριμένο δεν στοχεύει σε ένα πελάτη αλλά σε πολλούς και είμαστε δεσμευμένοι να παρέχουμε υποστήριξη. Φανταστείτε, τι θα γίνει αν το εγκαταστήσουν 100 ή 1000 άνθρωποι, και δεν είναι σωστά φτιαγμένο. Την επόμενη μέρα, οι μισοί θα ζητάνε τα λεφτά τους πίσω και θα έχουμε γεμίσει μηνύματα για σφάλματα και bugs!

Τέλος, δε ξεχνάμε το Unit Testing

Αν δε γνωρίζετε τι είναι, ψάξτε το! Σε κάθε γλώσσα υπάρχουν unit testing frameworks, πχ στην php το phpunit, στο javascript το QUnit, στη C το Cute κτλ! Όλα αυτά είναι εφαρμογές/εργαλεία που μπορείτε να χρησιμοποιήσετε ώστε να τεστάρετε την λειτουργία των συναρτήσεων σας. Όπως και να φτιάχνετε γενικό διαγνωστικό κώδικα, βάσει συνθηκών!

Καλό κώδικα, λοιπόν!








Hide ↑

Το αντικείμενο των σπουδών μου είναι η Μηχανολογία! Ασχολούμαι με τον προγραμματισμός σχεδόν από τα 14. Η πρώτες μου γλώσσες ήταν η QBasic και η Turbo Pascal. Από τα 16 και έπειτα έμαθα να δουλεύω με Visual Basic. Και με την έναρξη της φοιτητικής ζωής, ξεκίνησε η δουλειά πάνω σε C#, Java, php και javascript scripting και όλο το πακέτο του web development. Εκτός από το κερδοσκοπικό κομμάτι της δουλειάς μου ως developer . Δουλεύω πάνω σε opensource εφαρμογές και παραδείγματα κώδικα για την ενίσχυση της κοινότητας του ελληνικού development. Για περισσότερα, επισκεφτείτε το infogeek.gr!

Follow Κωνσταντίνος Τσατσαρούνος on Twitter ,

Προσθέτοντας θέματα στο MP6

21 September 2013

Όσοι δεν ξέρετε το MP6, είναι ένα plugin που αλλάζει την εμφάνιση του wordpress backend, ή αλλιώς τις σελίδες διαχείρισης περιεχομένου του! Δίνει μία πολύ[…]

Read more...

Git ή SVN, επιλογή version control

09 September 2013

Είμαι πολύ καιρό χρήστης του SVN και δεν το μετανιώνω! Ωστόσο το subversion control, είναι καλό στον έλεγχο τον αλλαγών ενός project που ξέρεις από που ξεκινάει[…]

Read more...

Κεντράροντας δυναμικά html elements μόνο με CSS!

08 June 2013

Ένα πράγμα που πρέπει να αναλογιστεί κανείς, είναι πόσες ώρες σπαταλάμε την ημέρα για να πετύχουμε ομαλή και responsive συμπεριφορά σε ότι σχεδιάζουμε.[…]

Read more...






Σχόλια

Δεν υπάρχουν σχόλια ακόμα.

Αφήστε ένα σχόλιο

 






RSS για τα σχόλια σε αυτό το άρθρο.  |  TrackBack URL



 
 
 

Eταιρείες παροχής υπηρεσιών διαδικτύου




 

Το Όραμά Μας

3d2 3d2

Η νέα εποχή ξεκινάει…

Είστε έτοιμοι;

Παρά τις όποιες δυσκολίες συναντήσαμε, τελικά μετά από 1 χρόνο περίπου, καταφέραμε να συγκεντρώσουμε τις δυνάμεις μας και να βάλουμε τις σκέψεις μας στο σωστό μονοπάτι.

Ξεκινάμε μια νέα εποχή για τα Ελληνικά δεδομένα. Κοιτάμε μπροστά και οραματίζομαστε το μέλλον με αισιοδοξία σε μία πολύ δύσκολη εποχή!

Αν είστε digital artist (web designer. web developer, programmer, 3d animator, graphic designer κτλ)  δώστε λίγα λεπτά από τον χρόνο σας να διαβάσετε το παρακάτω άρθρο. Σίγουρα σας ενδιαφέρει

 
web design forum

  • Προσεγγίστε νέους αναγνώστες και φίλους
  • Αποκτήστε το δικαίωμα να προωθήστε την σελίδα σας μέσω διαφημιστικών banner στο web design forum
  • Αποκτήστε συνδέσμους και backlinks δωρεάν
  • Αυτόματη προωθηση του άρθρου σας, σε διάφορες ιστοσελίδες κοινωνικής δικτύωσης.