Εισαγωγή

Στυλ προγραμματισμού (αγγλ. Programming/Coding style ή Coding conventions) είναι ένα σύνολο κανόνων ή κατευθυντήριων γραμμών που χρησιμοποιούνται κατά την σύνταξη του πηγαίου κώδικα ενός προγράμματος υπολογιστή σε μια συγκεκριμένη γλώσσα προγραμματισμού που συνιστά να χρησιμοποιούνται συγκεκριμένες πρακτικές και μέθοδοι για κάθε πτυχή ενός προγράμματος γραμμένο στην συγκεκριμένη γλώσσα. Ο σκοπός του προγραμματιστικού στυλ είναι να εξασφαλίσει ότι ο πηγαίος κώδικας είναι γραμμένος με τρόπο που βελτιώνει την αναγνωσιμότητα του καθώς και την συντηρησιμότητα του ([1], [2], [3], [4], [5]).

Το σύνολο των κανόνων που ισχύουν για την συγγραφή του πηγαίου κώδικα μπορούν να ταξινομηθούν σε 4 τομείς [4]:

Η ταξινόμηση του προγραμματιστικού στυλ <a href="#cite-6">[6]</a>.
Η ταξινόμηση του προγραμματιστικού στυλ [6].
  • Τυπογραφικά στυλ: Κανόνες που αφορούν την διάταξη και την εμφάνιση του κώδικα καθώς και την χρήση σχολίων, αλλά όχι την εκτέλεση του προγράμματος.
  • Γενικές πρακτικές προγραμματισμού: Κανόνες και κατευθυντήριες γραμμές σχετικά με την μεθοδολογία και την γλώσσα που χρησιμοποιούνται και επηρεάζουν τον πηγαίο κώδικα.
  • Δομές ελέγχου: Κανόνες που επηρεάζουν την χρήση των αλγορίθμων καθώς και την υλοποίηση τους.
  • Δομές πληροφοριών: Κανόνες που επηρεάζουν τις δομές δεδομένων, την ροή του προγράμματος καθώς και την αποθήκευση και χειρισμό της πληροφορίας.

Σε αυτή την εργασία θα αναπτυχθούν τα δύο πρώτα θέματα (τυπογραφικό στυλ και γενικές πρακτικές προγραμματισμού). Αυτές οι κατευθυντήριες γραμμές είναι για την διαρθρωτική ποιότητα του λογισμικού 1 (αγγλ. Software structural quality) Προβάλλεται συχνά το επιχείρημα ότι ακολουθώντας ένα συγκεκριμένο προγραμματιστικό στυλ μπορεί να βοηθήσει στην ανάγνωση και κατανόηση του πηγαίου κώδικα, και επιπλέον βοηθά στην αποφυγή λαθών αλλά και στην βελτίωση της ποιότητας του πηγαίου κώδικα ([3], ([7], ([8], ([9]).

Η σχέση μεταξύ προγραμματιστικού στυλ και ποιότητας λογισμικού 
<a href="#cite-9">[9]</a>.
Η σχέση μεταξύ προγραμματιστικού στυλ και ποιότητας λογισμικού [9].

Οι συμβάσεις που γίνονται όταν ακολουθείται ένα συγκεκριμένο στυλ προγραμματισμού βοηθά μόνο τους συντηρητές και τους διορθωτές του πηγαίου κώδικα ενός προγράμματος. Το προγραμματιστικό στυλ δεν επιβάλλεται από τους μεταγλωττιστές. Έτσι ένα πρόγραμμα το οποίο δεν ακολουθεί κάποιους ή όλους τους κανόνες δεν έχει καμία επίδραση στο εκτελέσιμο αρχείο του προγράμματος που δημιουργήθηκε από τον πηγαίο κώδικα ([1],[2]).

Το στυλ γραφής είναι ένα στοιχεία το οποίο συχνά παραβλέπεται αλλά είναι πολύ κρίσιμο χαρακτηριστικό της γραφής. Το ύφος της γραφής επηρεάζει άμεσα την αναγνωρισιμότητα και κατανόησης του τελικού προϊόντος. Έτσι ομοίως και το στυλ προγραμματισμού, που είναι η συγγραφή του πηγαίου κώδικα σε μία γλώσσα προγραμματισμού, ομοίως πάσχει από αυτή την παραμέληση. Τα προγράμματα πρέπει να είναι αναγνώσιμα και κατανοητά όχι μόνο από τις μηχανές αλλά ομοίως και από τον άνθρωπο. Η απαίτηση αυτή είναι σημαντική για τη δημιουργία ποιοτικών προϊόντων που ανταποκρίνονται όχι μόνο στις ανάγκες των χρηστών, αλλά επίσης μπορούν να αναπτυχθούν εντός προγράμματος και εκτιμώμενου κόστους. Η αποτελεσματική συγγραφή προγραμμάτων έχει ήδη ερευνηθεί από πολύ παλιά [10] από τις πρώτες γλώσσες προγραμματισμού που υπήρχαν όπως η Fortan αλλά συνεχίζει να είναι ακόμα ένα φλέγον ζήτημα ([3],[Citation not found]).

Το στυλ προγραμματισμού που χρησιμοποιείται σε ένα συγκεκριμένο πρόγραμμα μπορεί να προέρχεται από τις συμβάσεις γραφής (αγγλ. \en{coding conventions}) που έχει κάνει μια εταιρεία ή κάποιος άλλος οργανισμός που ασχολείται με την συγγραφή κώδικά (π.χ. [11], [12], [13], [14], [15], [16], [17]}) καθώς και τις προτιμήσεις του ίδιου του συγγραφέα. Υπάρχουν πολυάριθμες συμβάσεις γραφής που χρησιμοποιούνται για να διασφαλίσουν "συνεπή" (αγλλ. consistent) κώδικα. Οι συμβάσεις γραφής είναι σημαντικές στους προγραμματιστές διότι μπορούν να προσφέρουν αρκετά πλεονεκτήματα όπως ([18], [1], [19]):

  • Συντήρηση λογισμικού (αγγλ. Software maintenance):Η συντήρηση του λογισμικού αντιπροσωπεύει τουλάχιστον το 50% του κόστους ζωής του λογισμικού ([4], ενώ σε άλλες έρευνες αναφέρετε ότι το 40% με 80% τους κόστους ζωής ενός λογισμικού πάει στην συντήρηση του κώδικα (([20], ([1]). Η μείωση, λοιπόν, του κόστους συντήρησης είναι ο πιο συχνά αναφερόμενος λόγος για την χρησιμοποίηση συμβάσεων γραφής. Σχεδόν κανένα λογισμικό δεν διατηρείται μόνο από τον αρχικό του δημιουργό. Έτσι οι συμβάσεις αυτές βοηθούν στην καλύτερη κατανόηση του κώδικα, επιτρέποντας και σε άλλους προγραμματιστές να συμμετέχουν στην επέκταση του κώδικα.

  • Ποιότητα λογισμικού (αγγλ. Software quality): Η αξιολόγηση και η διόρθωση του κώδικα συχνά περιλαμβάνει την ανάγνωση του πηγαίου κώδικα από τρίτους. Εξ ορισμού, μόνο ο αρχικός συντάκτης έχει διαβάσει τον πηγαίο κώδικα πριν την αξιολόγηση του. Ο πηγαίος κώδικας ο οποίος τηρεί κάποιες συμβάσεις είναι πιο κατανοητός στους υπόλοιπους και επομένως η διαδικασία ανίχνευσής σφαλμάτων γίνεται πιο εύκολη.

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

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

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

Τα πεδία που επηρεάζονται από την επιλογή ενός στυλ κώδικα
<a href="#cite-3">[3]</a>.
Τα πεδία που επηρεάζονται από την επιλογή ενός στυλ κώδικα [3].
1. Η διαρθρωτική ποιότητα του λογισμικού αναφέρεται στο πως οι μη -- λειτουργικές πτυχές του προγραμματισμού (όπως τα σχόλια, κ.λ.π) βοηθούν στην υλοποίηση των λειτουργικών πτυχών, όπως η αξιοπιστία του προγράμματος ή ευκολία στην συντήρηση του ([21]).

1Wikipedia, Coding conventions --- {W}ikipedia{,} The Free Encyclopedia,
2Wikipedia, Programming style --- {W}ikipedia{,} The Free Encyclopedia,
3Ala-Mutka, Kirsti and Uimonen, Toni and Jarvinen, Hannu-Matti, Supporting students in C++ programming courses with automatic program style assessment, Citeseer, 2004.
4Mohan, A. and Gold, N., Programming style changes in evolving source code, Program Comprehension, 2004. Proceedings. 12th IEEE International Workshop on, 2004.
5Oman, P. W. and Cook, C. R., A Paradigm for Programming Style Research, ACM, 1988.
6Paul W. Oman and Curtis R. Cook, A programming style taxonomy , 1991.
7Ayerbe, A. and Vazquez, I., Software products quality improvement with a programming style guide and a measurement process, Computer Software and Applications Conference, 1998. COMPSAC '98. Proceedings. The Twenty-Second Annual International, 1998.
8Cox, A. and Fisher, M., Programming Style: Influences, Factors, and Elements, Advances in Computer-Human Interactions, 2009. ACHI '09. Second International Conferences on, 2009.
9Wang, Yanqing and Zheng, Bo and Huang, Hujie, Complying with Coding Standards or Retaining Programming Style: A Quality Outlook at Source Code Level., 2008.
10Kernighan, Brian W. and Plauger, P. J., The Elements of Programming Style, McGraw-Hill, Inc., 1982.
11Richard Stallman et all., GNU Coding Standards, 2013.
12GNU, GNU Coding Standards,
13Google, Google Style Guide,
14Google, Google C++ Style Guide,
15GCC, GCC Coding Conventions,
16Boost, Boost Library Requirements and Guidelines,
17Linus Torvalds, Linux kernel coding style,
18Wikibooks, Computer Programming/Coding Style,
19Sutter, Herb and Alexandrescu, Andrei, C++ coding standards: 101 rules, guidelines, and best practices, Pearson Education, 2004.
20Robert L. Glass, Facts and Fallacies of Software Engineering, Addison-Wesley, 2003.
21Wikipedia, Software quality --- {W}ikipedia{,} The Free Encyclopedia,





results matching ""

    No results matching ""