Μεταφερσιμότητα
Η μεταφερσιμότητα ενός προγράμματος εμποδίζεται από:
- Διαφορετικούς επεξεργαστές (όταν είναι σε εκτελέσιμη μορφή)
- Διαφορετικά λειτουργικά συστήματα (όταν είναι σε εκτελέσιμη μορφή)
- Τα παραπάνω και διαφορετικούς μεταγλωττιστές και βιβλιοθήκες
(όταν είναι σε πηγαίο κώδικα)
Ο προγραμματισμός σύμφωνα με τις παρακάτω
αρχές αυξάνει τη μεταφερσιμότητα του προγράμματος:
- Να χρησιμοποιούνται μόνο στοιχεία που περιέχονται στον
πρότυπο ορισμό της γλώσσας και όχι επεκτάσεις (π.χ. πίνακες
με μεταβλητό μήκος στη GNU C).
- Να αποφεύγεται η χρήση "εξωτικών" στοιχείων της γλώσσας
προγραμματισμού
(π.χ. ο τύπος complex στη C, member templates στη C++, εσωτερικές κλάσεις
στη Java) αν δεν είναι απολύτως απαραίτητο.
- Να μη βασίζεται ο κώδικας σε ιδιότητες της γλώσσας που δεν
ορίζονται με συνέπεια (π.χ. το πρόσημο των χαρακτήρων στη C/C++).
- Να μη βασίζεστε στη σειρά εκτέλεσης των πράξεων
(π.χ. printf("%d, %d", x++, x++) τυπώνει 0, 0 με το
μεταγλωττιστή Microsoft C και 0, 1 με το μεταγλωττιστή GNU C).
- Να μη βασίζεστε στο μέγεθος των αριθμητικών τύπων.
Αν και αυτό ορίζεται αυστηρά στη Java, σε άλλες γλώσσες αλλάζει
συχνά
ανάλογα με το μεταγλωττιστή και τον επεξεργαστή
(π.χ. το μέγεθος του τύπου char * μπορεί να είναι 16, 32, ή 64 bit
στη C++).
- Να μη βασίζεται ο κώδικας στη σειρά φύλαξης των byte
κάθε τύπου στη μνήμη, ούτε στη σειρά φύλαξης των μελών
των κλάσεων και των δομών.
- Να χρησιμοποιείτε μόνο τις πρότυπες βιβλιοθήκες ή μεταφέρσιμες
βιβλιοθήκες
λογισμικού ανοιχτού κώδικα (open source software).
- Αρχεία που μεταφέρονται ανάμεσα σε υπολογιστές να περιέχουν
απλό κείμενο.