Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια

On Error Resume ... what?

    Imagine a form. A VB6 form. The form has a couple dozen controls. It also has a couple dozen methods. Each method has a couple hundred lines of code (net, no comments). Each method may call a half dozen other methods, except some thousand-liners that call almost half of all the methods.

 

And there is no centralized error handling.

 

    Nothing. Nada. Zip. In fact, there is no real error handling code at all. Each method returns either an exit code or a default value. Their callers have to check the return codes or guess whether the default return value is a normal value or the result of an error. Some may even return error messages instead of codes. And while the programmers were generally quite diligent in checking the result codes, some error conditions  inevitably go unnoticed. Until a customer notices them, that is.

    Now, the methods do log the errors before returning the error codes. Only, they don't all do it the same way. Some log their names and the error description, others just a generic error message. Few do log the source of the error. For the thousand liner methods, this means that it is almost impossible to locate where the error occurred!

 

    Now, the programmers should make sure they always check the return values. They should always log all the appropriate error info. And they should always return the agreed-upon result codes. But people make mistakes. They can't help it. There will always be some unchecked return values and what happens then? The necessary cleanup code isn't executed, invalid values are produced. At best, this will cause the code to throw another error later on, only the root cause will be unknown. Usually , the incorrect results will travel all the way to the end user, resulting on some quite entertaining expletives from the end user and some rather unflattering comments regarding the programmers' ancestry. At worst, the invalid results may we go unnoticed and result in significant financial losses and legal trouble.

    Have you ever heard about the granny that was charged 50,000 € for electricity? Or the guy that bought a new stereo for only 3.00 €? Would you like to be the customer whose bank account was deleted when he deposited just enough to cover his overdraft?

 

Would you feel safe using that code? Or, maybe even modify it to add new functionality?

Έχουν δημοσιευτεί Πέμπτη, 14 Δεκεμβρίου 2006 10:40 μμ από το μέλος Παναγιώτης Καναβός

Ενημέρωση για Σχόλια

Αν θα θέλατε να λαμβάνετε ένα e-mail όταν γίνονται ανανεώσεις στο περιεχόμενο αυτής της δημοσίευσης, παρακαλούμε γίνετε συνδρομητής εδώ

Παραμείνετε ενήμεροι στα τελευταία σχόλια με την χρήση του αγαπημένου σας RSS Aggregator και συνδρομή στη Τροφοδοσία RSS με σχόλια

Σχόλια:

# Απ: On Error Resume ... what?

Δυστυχώς η κατάσταση που περιγράφεις είναι πολύ συνηθισμένη. Συντηρούσα σύστημα γνωστής ελληνικής εταιρείας λογισμικού γύρω στις 200.000 LOC το οποίο ήταν όπως το περιγράφεις. Μετά έγινα καθηγητής πληροφορικής στην Βθμια εκπαίδευση :)
Για να σοβαρευτούμε ποιος φταίει για την κατάσταση αυτή:
-> Η vb που δίνει αυτήν την δυνατότητα?
-> Ο/Οι προγραμματιστές που δεν επιμένουν στην λεπτομέρεια?
-> Η διοίκηση η οποία θέλει μονο features χθες?
-> Όλα τα παραπάνω?

Been there, done that and ain't never going back again!
Παρασκευή, 15 Δεκεμβρίου 2006 9:12 πμ by skynyrdFrynd

# Απ: On Error Resume ... what?

Θα έλεγα οι προγραμματιστές που δεν προσπαθούν να μάθουν τις σωστές τεχνικές προγραμματισμού και λιγότερο η διοίκηση που δεν εκπαιδεύει ή προσλαμβάνει τους φθηνότερους προγραμματιστές αντί για τους καλύτερους. Για το δεύτερο ισχύει το αγγλικό "We are too poor to buy cheap".
Για τους προγραμματιστές, δεν υπάρχουν πολλές δικαιολογίες καθώς η VB6 έχει Error Handling. Είναι λογικό ένας junior να μην ξέρει τόσο καλά πως να το χειριστεί, αλλά όταν φτάνουμε στα KLOCs δεν υπάρχουν πολλές δικαιολογίες.
Και το μόνο που χρειάζεται είναι να ακολουθήσεις μερικές απλές οδηγίες! Αλλά αυτό το κρατάω για το επόμενο post ...
Σάββατο, 16 Δεκεμβρίου 2006 11:36 πμ by Παναγιώτης Καναβός

# Απ: On Error Resume ... what?

Φταίνε ΚΑΙ οι προγραμματιστές ΚΑΙ οι εταιρείες, αλλά κυρίως οι εταιρείες. Οι εταιρείες προτιμούν τους χαμηλόμισθους και άπειρους φοιτητές σε θέσεις ευθύνης, οι εταιρείες είναι που ποτέ δεν οργανώνουν code review. Μόνιμο παράπονό μου είναι ότι ποτέ κανείς προϊστάμενός μου δεν κοίταξε τον κώδικά μου για να κρίνει αν αξίζω αυτά που πληρώνομαι (ή λιγότερα / περισσότερα). Διευθύνων Σύμβουλος ήταν αυτός που στην πρώτη μου δουλειά, τους λίγους μήνες που δούλεψα ευτυχώς σε VB6, φρόντιζε πάντα να μας τονίζει ότι: δεν πρέπει ποτέ να ξεχνάμε το ON ERROR RESUME NEXT.
Κυριακή, 17 Δεκεμβρίου 2006 7:21 μμ by Νίκος Κανελλόπουλος

# re: On Error Resume ... what?

On Error Resume Next ή On Error Stop.... η σκηνή είναι η ίδια και επαναλαμβάνεται χρόνια τώρα...

Αυτό που λείπει, κατά την γνώμη μου, είναι ο καθορισμός standards στον κώδικα και όπως σε κάθε προϊόν να περνάει και αυτός από quality assurance test πριν βγεί στην παραγωγή.

Το ξέρω οτι ζητάω πολλά στην χώρα της Coca-Cola και του Arpa-Cola! Αυτό που δηστυχώς δεν είναι κατανοητό είναι οτι τέτοιες ελλείψεις οδηγούν τελικά σε υψηλότερο κόστος παραγωγής από το κόστος που απαιτούσε αν υπήρχε ειδικό τμήμα (τμήμα... καλά τώρα!! ένα άτομο τέλος πάντων) που να αναλαμβάνει το quality test.

Από την άλλη,... για να μην τα βάζουμε πάντα με τον έυκολο στόχο, έχετε προσπαθήσει να αναλάβετε τον έλεγχο του error handling όταν καλείτε μια procedure σε Sql Server 2000 και τυγχάνει να έχει αλλάξει το όνομα ενός πεδίου? Το περίφημο "If @@error" είναι απλά άχρηστο!

Κυριακή, 10 Ιουνίου 2007 6:32 μμ by Thiseas

# re: On Error Resume ... what?

Τί κάνεις όμως όταν το On Error Resume Next το προστάζουν τα coding standards της εταιρείας? Όπως έγραψε και ο Νίκος, υπάρχουν εταιρείες στις οποίες αυτή η λογική όντως υπάρχει στα coding standards. Και quality assurance υπάρχει, το οποίο περιλαμβάνει έλεγχο ότι μπήκαν τα On Error Resume Next.

Δυστυχώς, τα coding standards και το quality assurance δεν μπορούν να υποκαταστήσουν τη στοιχειώδη νοημοσύνη.

Κυριακή, 10 Ιουνίου 2007 7:48 μμ by Παναγιώτης Καναβός

Ποιά είναι η άποψή σας για την παραπάνω δημοσίευση;

(απαιτούμενο) 
απαιτούμενο 
(απαιτούμενο) 
ÅéóÜãåôå ôïí êùäéêü:
CAPTCHA Image