Arduino και Raspberry Pi Αρχάριοι; Εδώ είναι πώς να γράψετε καθαρό κώδικα

Διαφήμιση

Διαφήμιση
Διαφήμιση

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

Γράφοντας καθαρό κώδικα είναι ευκολότερο να λέγεται παρά γίνεται.

Είτε είστε Arduino Ξεκινώντας με το Arduino: Οδηγός για αρχάριους Ξεκινώντας με το Arduino: Ένας οδηγός για αρχάριους Το Arduino είναι μια πλατφόρμα πρωτοτύπου ηλεκτρονικών ανοικτών πηγών που βασίζεται σε ευέλικτο και εύχρηστο υλικό και λογισμικό. Πρόκειται για καλλιτέχνες, σχεδιαστές, χομπίστες και όσους ενδιαφέρονται να δημιουργήσουν διαδραστικά αντικείμενα ή περιβάλλοντα. Διαβάστε περισσότερα tinkerer, ή χτίζετε Raspberry Pi Raspberry Pi: Το Ανεπίσημο Tutorial Raspberry Pi: Το Ανεπίσημο Tutorial Είτε είστε ένας σημερινός ιδιοκτήτης Pi που θέλει να μάθει περισσότερα ή ένας δυνητικός ιδιοκτήτης αυτής της συσκευής μεγέθους πιστωτικής κάρτας, αυτό δεν είναι δεν είναι ένας οδηγός που θέλετε να χάσετε. Διαβάστε περισσότερες εφαρμογές με την Python ή είστε ακόμη και προγραμματιστής ιστού, υπάρχουν κάποιες χρήσιμες συμβουλές που θα ακολουθήσετε, οι οποίες θα κάνουν τον κώδικα σας πιο εύκολο να διαβαστεί από άλλους. Εδώ είναι τι πρέπει να ξέρετε .

Να είναι συνεπής

Ίσως η πρώτη και πιο προφανής συμβουλή να είναι συνεπής σε αυτό που κάνετε. Ένα καλό παράδειγμα αυτού είναι η ακολουθία των ίδιων μοτίβων όταν ονομάζουμε λειτουργίες Τα απόλυτα βασικά του προγραμματισμού για αρχάριους (Μέρος 2) Τα απόλυτα βασικά του προγραμματισμού για αρχάριους (Μέρος 2) Στο μέρος 2 του απόλυτου οδηγού μας για τον προγραμματισμό, θα είμαι που καλύπτουν τα βασικά των λειτουργιών, τις τιμές επιστροφής, τους βρόχους και τους όρους. Βεβαιωθείτε ότι έχετε διαβάσει το μέρος 1 πριν από την αντιμετώπιση αυτού, όπου εξήγησα ... Διαβάστε περισσότερα και μεταβλητές Τα βασικά του προγραμματισμού υπολογιστών 101 - Μεταβλητές και τύποι δεδομένων Τα βασικά του προγραμματισμού υπολογιστών 101 - μεταβλητές και τύποι δεδομένων Έχοντας εισαγάγει και μίλησε λίγο για Αντικειμενοστραφής Προγραμματισμός πριν και από πού προέρχεται το ομώνυμο, σκέφτηκα ότι ήρθε η ώρα να περάσουμε από τα απόλυτα βασικά του προγραμματισμού με έναν μη γλωσσικό συγκεκριμένο τρόπο. Αυτό ... Διαβάστε περισσότερα. Θα πρέπει να επιλέξετε μια σύμβαση ονοματολογίας και να κολλήσετε με αυτήν.

Λοιπόν, ποια ονομασία πρέπει να χρησιμοποιήσετε;

Λοιπόν, αν γράφετε Python για το Raspberry Pi, η απάντηση είναι ξεκάθαρη. Το πρότυπο PEP-8 (το βαρόμετρο για καλό, καθαρό κώδικα Python) λέει ότι τα ονόματα των μεταβλητών πρέπει να είναι πεζά, με κάθε λέξη να χωρίζεται από μια υπογράμμιση. Για παράδειγμα: gpio_input και moisture_sensor_reading .

cleancode-arduino

Ο οδηγός στυλ Arduino δηλώνει σιωπηρά ότι πρέπει να γράψετε τις μεταβλητές σας σε αυτό που είναι γνωστό ως Case Camel. Εδώ, οι λέξεις δεν χωρίζονται από τίποτα, αλλά το πρώτο γράμμα κάθε λέξης κεφαλαιοποιείται, εκτός από την πρώτη λέξη. Για παράδειγμα: buttonPressed και temperatureReading .

Υπάρχουν, φυσικά, και άλλα στυλ μεταβλητής ονομασίας. Τα παραπάνω είναι απλά αυτά που συνιστώνται από τους επίσημους οδηγούς στυλ. Αλλά ό, τι επιλέγετε, βεβαιωθείτε ότι έχετε κολλήσει από αυτό, και να χρησιμοποιήσετε την ίδια ονομασία σύμβαση σε όλο το πρόγραμμά σας.

Γράψτε Σημαντικά Σχόλια

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

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

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

 // ενημέρωση ανάγνωσης 

Εξετάστε τη γραφή:

 // Ενημερώστε τον αριθμό των φορών που έχει σπάσει η δέσμη λέιζερ, πριν την ξεμπλοκάρισμα 

Βεβαιωθείτε ότι έχετε γράψει πλήρως, γραμματικά σωστές προτάσεις. Επιπλέον, το πρότυπο PEP-8 για την Python αναφέρει ότι θα πρέπει πάντα να γράφετε τα σχόλια και τις μεταβλητές σας στα Αγγλικά. Αυτό διευκολύνει τους άλλους να συνεργάζονται μαζί σας, αν αποφασίσετε να απελευθερώσετε τον κώδικα σας ως ανοιχτού κώδικα, καθώς τα αγγλικά είναι σχεδόν το lingua franca της ανάπτυξης λογισμικού.

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

Προσωπικά, νομίζω ότι αυτό είναι λίγο ακραίο. Αν γράφετε ριζικά, εκφραστικά ονόματα μεταβλητών, ο κωδικός σας είναι ήδη αυτόγραφα. Τούτου λεχθέντος, μη διστάσετε να προσθέσετε σχόλια όπου νομίζετε ότι χρειάζονται. Χρησιμοποιήστε τη δική σας καλή κρίση.

Απλοποιήστε τον κώδικα σας

Όταν μαθαίνετε να αναπτύξετε για πρώτη φορά Πώς να μάθετε τον προγραμματισμό χωρίς όλο το άγχος Πώς να μάθετε τον προγραμματισμό χωρίς όλο το άγχος Ίσως έχετε αποφασίσει να ακολουθήσετε προγραμματισμό, είτε για μια σταδιοδρομία είτε για ένα χόμπι. Εξαιρετική! Αλλά ίσως αρχίζετε να αισθάνεστε συγκλονισμένοι. Οχι και τόσο καλό. Εδώ μπορείτε να διευκολύνετε το ταξίδι σας. Διαβάστε περισσότερα, είστε συχνά γεμάτοι με μια τεράστια βιασύνη του ενθουσιασμού. Μπορείτε να διαβάσετε ό, τι μπορείτε για τη γλώσσα, το πλαίσιο ή την πλατφόρμα που έχετε επιλέξει. Αρχίζετε να συναντάτε έννοιες που δεν γνωρίζατε ποτέ πριν και είστε πολύ πρόθυμοι να τις χρησιμοποιήσετε στον δικό σας κώδικα.

Πράγματα όπως οι τριμερείς φορείς, που σας επιτρέπουν να συμπυκνώσετε τη λογική μιας δήλωσης if, όπως αυτή:

int x = 5; if ( x< 10) { y = 1; { else { y = 0; } 

Σε μια γραμμή, όπως αυτό:

 int x = 5; int y = (x< 10) ? 1 : 0; printf("%i\n", y); 

Οι τριμερείς φορείς είναι σίγουρα δροσεροί και σας ενθαρρύνω να τις διαβάσετε. Αλλά όταν γράφετε κώδικα που είναι εύκολο για τους άλλους να το διαβάσουν, είναι καλύτερα να αποφεύγονται. Αυτό είναι μόνο ένα παράδειγμα, όμως.

Ο οδηγός στυλ Arduino σας ενθαρρύνει επίσης να αποφύγετε τους δείκτες, τις #define δηλώσεις και τους τύπους δεδομένων εκτός από το standard: boolean, char, byte, int, unsigned int, long, unsigned long, float, double, string, array και void. Θα πρέπει να αποφύγετε τους τύπους δεδομένων όπως το uint8_t, καθώς αυτά χρησιμοποιούνται λιγότερο συχνά, δεν εξηγούνται στην τεκμηρίωση και δεν είναι τρομερά χαλαροί.

Εσοχή και εκμεταλλευτείτε το Whitespace

Όταν πρόκειται για γράψιμο καθαρού κώδικα, οι χρήστες της Python έχουν πλεονέκτημα, καθώς ο τυποποιημένος διερμηνέας της Python δίνει εντολή σε όλους τους κώδικες να είναι δομημένα και να είναι ευθυγραμμισμένοι. Εάν δεν κατατάσσεστε μετά από κάθε δήλωση λειτουργίας και κλάσης και υπό όρους, το πρόγραμμά σας απλά δεν θα εκτελεστεί.

cleancode-python

Στο Arduino, τίποτα δεν σας εμποδίζει να γράψετε αδόμητο, συμπαγή κώδικα. Αυτό, τελικά, είναι δύσκολο να διαβαστεί και δύσκολο να διατηρηθεί.

Αλλά δεν υπάρχει τίποτα που να σας εμποδίζει να διαρθρώσετε τον κώδικα σας καλύτερα.

Κατ 'αρχάς, καθορίστε πόσο θα παύσετε. Θα πρέπει να χρησιμοποιήσετε με προσοχή το πλήκτρο καρτελών, καθώς κάθε επεξεργαστής κειμένου χειρίζεται διαφορετικά τον κώδικα ASCII για τις καρτέλες και εάν μοιράζεστε τον κώδικα με κάποιον άλλο, υπάρχει πιθανότητα να εισαγάγουν ακούσια ασυνέπειες στην εσοχή σας. Αυτές οι ασυνέπειες μπορεί να σπάσει το πρόγραμμά σας, ειδικά αν χρησιμοποιείτε μια ευαίσθητη γλώσσα όπως η CoffeeScript CoffeeScript είναι JavaScript χωρίς τους πονοκεφάλους CoffeeScript Είναι JavaScript χωρίς τους πονοκεφάλους Δεν έχω αρέσει πολύ γράφοντας JavaScript τόσο πολύ. Από την ημέρα που έγραψα την πρώτη μου γραμμή με τη χρήση του, πάντα αντιπαθούσα ότι ό, τι γράφω σε αυτό πάντα καταλήγει να μοιάζει με έναν Jackson ... Διαβάστε περισσότερα ή Python. Αυτό το άρθρο από το OpenSourceHacker εξηγεί λεπτομερέστερα γιατί πρέπει να αποφεύγεται το πλήκτρο καρτελών.

καθαρήκαρτέλα

Έχω την τάση να χρησιμοποιούν τέσσερα κενά για κάθε παύλα, αλλά ο συνολικός αριθμός εξαρτάται από εσάς. Ακριβώς εφ 'όσον είστε συνεπείς.

Μπορείτε να διαμορφώσετε το IDE και τον επεξεργαστή κειμένου σας για να αντιμετωπίζετε κάθε καρτέλα ως καθορισμένο αριθμό διαστημάτων, επιτρέποντάς σας, ωστόσο, να χρησιμοποιήσετε το πλήκτρο καρτελών χωρίς τον κίνδυνο εισαγωγής προβλημάτων. Εάν χρησιμοποιείτε το Sublime Text 2, ελέγξτε την επίσημη τεκμηρίωσή τους. Εάν χρησιμοποιείτε το Vim, απλά επεξεργαστείτε το αρχείο .vimrc με αυτές τις γραμμές. Ο επεξεργαστής Arduino το κάνει αυτόματα για εσάς και εισάγει δύο κενά όποτε πιέζετε καρτέλα.

Στη συνέχεια, απλά πρέπει να ξέρετε πού να εισάγετε τον κώδικα σας. Ως καλός κανόνας, θα πρέπει πάντα να παύσετε μετά από κάθε δήλωση λειτουργίας, και μετά από κάθε if, else, για, ενώ, switch, και statement statement.

Πολλοί συντάκτες έρχονται με την ικανότητα να παύσουν ολόκληρα μπλοκ κώδικα ταυτόχρονα. Εάν χρησιμοποιείτε το Sublime Text 2, μπορείτε να ρυθμίσετε ένα συνδυασμό πλήκτρων ή πλήκτρων. Διαφορετικά, μπορείτε να χρησιμοποιήσετε τον προεπιλεγμένο συνδυασμό, ο οποίος (στο OS X) είναι Cmd + [ . Στο πρόγραμμα επεξεργασίας Arduino, μπορείτε να διορθώσετε αυτόματα την εσοχή του αρχείου σας πατώντας Ctrl + T στα Windows και Linux και Cmd + T στο OS X.

Εξαρτάται εξ ολοκλήρου από τον συντάκτη σας, οπότε διαβάστε το εγχειρίδιο !

Μην επαναλάβετε τον εαυτό σας

Ένα από τα πιο σημαντικά μάντρα της καλής ανάπτυξης λογισμικού είναι να μην επαναλάβετε τον εαυτό σας, ο οποίος συχνά συντομεύεται σε DRY.

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

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

cleancode-ξηρό

Μια καλή λειτουργία είναι σύντομη. ο οδηγός PEP-8 λέει λίγα για το μήκος λειτουργίας, αλλά ο Clean Code: Ένα εγχειρίδιο του Agile Software Craftsmanship από τον Bob Martin (συνιστάται ιδιαίτερα) λέει ότι "οι λειτουργίες δεν θα πρέπει να είναι πάντα 20 γραμμές". Κατά προτίμηση, θα ήταν ακόμη μικρότερες από αυτό .

Οι λειτουργίες πρέπει να κάνουν ακριβώς ένα πράγμα. Χρειάζεστε μια λειτουργία που κάνει δύο πράγματα; Γράψτε δύο λειτουργίες.

Αυτές οι συμβουλές καθιστούν εύκολη την παρακολούθηση της ροής ενός προγράμματος και, τελικά, να το διορθώσετε αν χρειαστεί. Υπάρχει επίσης ένα πρόσθετο πλεονέκτημα για τους χρήστες του Arduino, οι οποίοι περιορίζονται από τους περιορισμούς αποθήκευσης, καθώς απομακρύνονται οι απολύσεις. Αυτό έχει ως αποτέλεσμα μικρότερα προγράμματα.

Να είναι ρητή

Ένα άλλο σημαντικό μάντρα της ανάπτυξης λογισμικού είναι ότι "το ρητό είναι καλύτερο από το σιωπηλό" . Σημαίνει ότι ο κωδικός σας θα πρέπει να φωνάξει πολύ τι κάνει με την πρώτη ματιά. Ο οδηγός στυλ Arduino λέει ότι κάτι τέτοιο θα πρέπει να αποφεύγεται:

 if(buttonPressed){ doSomething(); } 

Μάλλον θα πρέπει να καταστήσετε προφανές τι συμβαίνει. Αντ 'αυτού, γράψτε κάτι σαν αυτό:

 if (buttonPressed == True){ doSomething(); } 

Πηγαίνετε έξω και τον κώδικα (καλά)

Η γραφή καθαρού κώδικα είναι εκπληκτικά απλή. Απλά πρέπει να είστε συνεπείς σε ό, τι κάνετε, να αποφύγετε τις απολύσεις και να είστε σαφείς. Θυμηθείτε, ο καθαρός κώδικας είναι απλά ένας κώδικας που είναι ευανάγνωστος.

Υπάρχει πολύ καλό υλικό ανάγνωσης για αυτό το θέμα. Ένα καλό σημείο εκκίνησης είναι ο οδηγός Arduino και οι οδηγοί στυλ API, ακολουθούμενοι από το πρότυπο PEP-8 εάν κατασκευάζετε εφαρμογές Python για το Raspberry Pi. Εάν χρησιμοποιείτε άλλη γλώσσα (όπως το Javascript στο διοικητικό συμβούλιο του Tessel Building the Internet of Things, με το Tessel: Το Node.js Building Board Building Το Διαδίκτυο των πραγμάτων, με το Tessel: Το Συμβούλιο Ανάπτυξης Node.js Tessel είναι μια νέα φυλή η οποία αναπτύσσεται εξ ολοκλήρου στο Node.js, και μετά από ένα επιτυχημένο Kickstarter, έχουν πλέον φτάσει στο σημείο να είναι διαθέσιμο σε όλους. Διαβάστε περισσότερα), ελέγξτε την Google για έναν επίσημο οδηγό στυλ.

Αν ψάχνετε για μια πιο ακαδημαϊκή ανάγνωση σχετικά με το θέμα, ανατρέξτε στο Clean Code: A Handbook of Agile Software Craftsmanship από τον Bob Martin. Το ανέφερα νωρίτερα σε αυτό το άρθρο και συνιστάται ιδιαίτερα. Αν και χρησιμοποιεί την Java για να απεικονίσει έννοιες, πολλές από τις ιδέες μπορούν να μεταφερθούν σε άλλες γλώσσες, όπως η Python και η C για το Arduino.

Υπάρχουν επίσης μερικές λαμπρές δημοσιεύσεις ιστολογίου στο διαδίκτυο που περιγράφουν πώς να γράφετε καλό, περιγραφικό, καθαρό κώδικα. Σας συνιστώ να ελέγξετε τον κώδικα "Καθαρός και υψηλής ποιότητας: ένας οδηγός για το πώς να γίνετε καλύτερος προγραμματιστής" από τον Arash Arabi για το butterfly.com.au και "The Fundamentals of Writing Clean Code" από τον Chris Reynolds, για το webdevstudios. com.

Αν και δεν σχετίζεται ρητά με τον καθαρό κώδικα, είναι επίσης χρήσιμο να μάθετε ποιες λειτουργίες και βιβλιοθήκες πρέπει να αποφεύγονται καλύτερα στη γλώσσα της επιλογής σας. Για παράδειγμα, εάν μαθαίνετε PHP, θα πρέπει να αποφύγετε τις βιβλιοθήκες "mysql" και αν κατασκευάζετε φυσικά προϊόντα με Arduino, δεν θα πρέπει ποτέ να χρησιμοποιήσετε τη συνάρτηση επιβράδυνσης Arduino και γιατί δεν πρέπει να το χρησιμοποιείτε Arduino Λειτουργία καθυστέρησης και γιατί δεν πρέπει να το χρησιμοποιήσετε Ενώ η καθυστέρηση () είναι χρήσιμη για βασικές επιδείξεις για το πώς λειτουργεί το Arduino, πραγματικά δεν πρέπει να το χρησιμοποιείτε στον πραγματικό κόσμο. Εδώ γιατί και τι πρέπει να χρησιμοποιήσετε αντ 'αυτού. Διαβάστε περισσότερα .

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

Έχετε κάποιες συμβουλές για να γράψετε καθαρό κώδικα; Μου χάσατε τίποτα; Πες μου! Αφήστε μου ένα σχόλιο παρακάτω, και επιτρέψτε μου να ξέρω.

Συντεταγμένες φωτογραφίας: Ξύλινο κρεβάτι (Premasagar), Μικρό κλειδί TAB (Kai Hendry), 2015 (Wikilogia)

In this article