25 Μαΐου 2005

ΕΠΕΙΣΟΔΙΟ 2: Ο κατηραμένος IFης

ΕΠΕΙΣΟΔΙΟ 2: Ο κατηραμένος IFης

Μια συνηθισμένη μέρα στο γραφείο. Ο πρώτος κουβάς καφέ έχει ήδη καταναλωθεί, και ο Ζαχαρίας βρίσκεται στο στάδιο της ενδοσκόπησης. Αυτοσυγκεντρώνεται προκειμένου να έχει άλλη μια αποδοτική και δημιουργική ημέρα, εξερευνώντας το ασφυκτικά γεμάτο mailbox του, το οποίο αποτελείται κατά κύριο λόγο από σοβαρά, άκρως επείγοντα επαγγελματικής φύσεως μηνύματα: "StocholmClubbing.pps", "AnIdiotWithASillyBear.wmv", "HolidayCalculator.xls". Ωπ, τι είναι αυτό; Μήνυμα από τον αρχι-δηβέλοπερ! (no? pun intented - Βοήθειά μας).

________________________________________
From: Απόλυτος Ξερόλας [mailto:tapairnoxontra@triakilakodika.gr]
Sent: Monday, May 23, 2005 09:00 AM
To:
zaxariasdtf@triakilakodika.gr
Subject: URGENT FUNCTIONALITY ENHANCEMENT

Ζαχαρία,

σου επισυνάπτω τον κώδικα του project "FTYS'TA" που υλοποιήσαμε πρόπερσι για τον όμιλο ξενοδοχείων ASYLLIPTIMPIXLA AE. Θα έχεις ακούσει για αυτό. Ειχαν κάποια προβλήματα με τα συνεργεία καθαριότητας (κυρίως μικροαπάτες στη διαχείριση από την εταιρία που ανέλαβε την υπηρεσία) και ήθελαν να παρακολουθούν έσοδα/έξοδα και τα συναφή λεπτομερώς.

Ομως λόγω της συγχώνευσης με τον όμιλο BETADINE SA χρειάζονται αλλαγές στον τρόπο υπολογισμού των εσόδων τους, και συγκεκριμένα σε ο,τι αφορά τις δαπάνες καθαρισμού. Σε παρακαλώ εντόπισε το συναφές functionality και υλοποίησε τις παρακάτω αλλαγές:

(ακολουθούν οι αλλαγές)

Θα πρέπει να είναι up and running ASAP. Οσο πιό ASAP τόσο μεγαλύτερο bonus θα πάρω. Θα σε κεράσω, το υπόσχομαι.

Τακης

ΔΤΦ: (Σκέφτεται) Χα! Piece of cake. Θα το τελειώσω σε κανα μισάωρο και μετά θα έχω όλη τη μέρα να απαντάω σε αυτόν τον Patrick στο dotnetzone.gr που αρέσκεται να ακολουθεί όλο τη μέθοδο 1.β....θα τον κάνω να γίνει παλαιοπώλης σήμερα....για να δούμε τον βρωμοκώδικα αυτόν....
(κλικ κλικ κλικ open? yes, κλικ κλικ....χμ, ενα αρχείο μόνο, everything.vb? ΠΩΣ; 89333 γραμμές κώδικα; )

Στο σημείο αυτό ο Ζαχαρίας χρειάστηκε να βγεί επειγόντως για να αγοράσει χάπια για την πίεση (και ενα jack daniels). Ωσπου να γυρίσει, σας παραθέτουμε ένα απόσπασμα από τον κώδικα για να περάσει η ώρα.

 

'----------------------------------------

'THIS IS FUNCTION CALCULATEREVENUE

'----------------------------------------

Friend Function CalculateRevenue( _

       ByVal strRevenue as int64, ByRef blnResult as int32) As Boolean

      

      

       '-----------------------------

       ' HANDLE SITUATIONS

       '-----------------------------

       If m_str15a = "1" andalso m_str13b = "true" or m_int8c = -1 Then

             

              Try

                     'Return 10000

                     blnResult=Convert("10000", int32)

                    

                     'Return TRUE

                     Return (true)

                    

                     '--------------------------

                     ' ERROR HANDLING (EXCEPTION)

                     '--------------------------             

              Catch ex as Exception

             

              'If something goes wrong, give error

                     Throw New Exception ("Exception Occured")

             

              Finally

                    

                     'Try something to fix problems. See code.

                     Try

                  'Call SuperComponent.TryToAdjustEverything

                           SuperComponent.TryToAdjustEverything()

 

                     '--------------------------

                     ' ERROR HANDLING (EXCEPTION)

                     '--------------------------             

                     Catch Ex as Exception               

                           'If something goes wrong, give error

                           Throw New Exception ("Exception Occured Inside")

                     End Try

              End Try

                                           Else IF m_str67z = "none" Then

             

              'Make m_redVariable equal to 1

              m_redVariable = 1

             

              'If m_redVariable is not zero

              If m_redVariable<>0 Then

                     'Do nothing

                     'If m_redVariable is zero

              Else

                    

                     'If nothing ok check those

                     If m_intAllOk = "no" andalso blnString = 546 Then

                    

                   'Call SuperComponent.DieWithSomething

         If SuperComponent.DieWithAnAwfulSound(m_objAlwaysOpenConnection) Then

                                

                        'Call me recursively. Everything will be allright then

                         CalculateRevenue (-5, m_greenVariable)

                                 

                           End If

                    

      End If 'End inner if

                                End If     'End outer if

       End If         'End outer-outer if

 

End Function



ΔΤΦ: ....(γκλουπ)....
(σηκώνει το τηλέφωνο)
ΔΤΦ: Απόλυτε;
ΑΠΞ: Ελα Ζαχαρία. Το πηρες; Δεν είναι τίποτα, ετσι; Piece of cake.
ΔΤΦ: Εχμ, (βαθιά αναπνοή). Ποιος το έχει φτιάξει αυτό;
ΑΠΞ: (Βαθειά αναπνοή). Ζαχαρία, δεν χρειάζεται να σκαλίζουμε το παρελθόν τώρα. Ο γέγοναι γέγοναι.
ΔΤΦ: ΠΟΙΟΣ το έχει φτιάξει αυτό Απόλυτε;
ΑΠΞ: Ζαχαρία, δεν εχει σημασία. Σημασία έχει τώρα να γίνει η δουλειά
ΔΤΦ: Απόλυτε, το comment 'TODO: (c) Apolytos "Supercoder" Kserolas - I don't know WTF is going on here σου λέει τίποτα;
ΑΠΞ: Ζαχαρία! Ολοι περάσαμε από αυτά! Ολοι κάναμε λαθάκια! Τωρα μπορείς να συγκεντρωθείς στην επέκταση;
ΔΤΦ: Θα χρειαστεί refactoring. Πολύ. Παρα πολύ.
ΑΠΞ: .....
ΔΤΦ: Εξωφρενικά πάρα. Πολύ. Πολύ.
ΑΠΞ: .....
ΔΤΦ: Απιστευτα και χυδαία πολύ. Refactoring. Απίστευτα.
ΑΠΞ: .....
ΔΤΦ: .....
ΑΠΞ: .....
ΔΤΦ: Refactoring είναι η επανασυγγραφή του κώδικα σε απλούστερη και πιό συντηρήσιμη μορφή.
ΑΠΞ: Ζαχαρία....μπορεί να έκανα μερικά λαθάκια αλλα ΣΕ ΔΙΑΒΕΒΑΙΩΝΩ ΟΤΙ ΞΕΡΩ τι ειναι rifactouring. Λοιπον...
ΔΤΦ: REfactOring.
ΑΠΞ: Ναι, whatever. Λοιπον δεν προλαβαίνουμε. Ακολουθησε την πεπατημένη και γράψε νέο functionality ως έχει.
ΔΤΦ: Δεν υπάρχει πεπατημένη.
ΑΠΞ: Μα ακολουθείται σαφώς ένα design pattern.
ΔΤΦ: Σαφως. Λεγεται "πλυσιμο χρωματιστών στους 90 βαθμούς μαζί με τα λευκά".
ΑΠΞ: Διακρίνω ειρωνεία;
ΔΤΦ: (γκουχ) οχι Απόλυτε, είναι ευφημισμός για το Observer Strategy of Abstract Factory Decorators που σαφώς ακολουθεί ο κώδικας. Σου.
ΑΠΞ: Φυσικά. Ειναι δοκιμασμένο Gang of Five Design Pattern. Διαβασε και κανενα βιβλίο.
ΔΤΦ: (Σκεφτεται) μανα γιατί με γέννησες και με άφησες να γίνω developer....
ΔΤΦ: Φυσικά, φυσικά....
ΔΤΦ: Απόλυτε;
ΑΠΞ: Παρακαλώ.
ΔΤΦ: Γκουχ. Θα χρειαστεί πολύ δουλειά. Για το νέο functionality θα πρέπει να αφαιρέσω το κομμάτι των Factories και να το αντικαταστήσω με τα Satisfactories. Επίσης οι Observers θα πρέπει να αποκτήσουν πιό ενεργό ρόλο και να γίνουν Executives. Τελος οι Decorators θα αντικατασταθούν από Gardeners. Μονο έτσι θα λειτουργήσει το πράγμα. Θα χρειαστώ δύο μήνες και πίτσα στο τέλος κάθε βάρδιας. Με διπλό τυρί.
ΑΠΞ: Χαίρομαι που το βλέπεις θετικά και που έχεις τόσο καλό motivation. Καπου έχω διαβάσει και εγώ για τους Gardeners, πραγματικά πολύ λειτουργικό. Θα εισηγηθώ 3 μήνες και ένα καλό bonus στο τέλος του project. Σε ευχαριστώ πολύ για την αφοσίωσή σου Ζαχαρία!
ΔΤΦ: Παντα, μα ΠΑΝΤΑ στη διάθεσή σου Απόλυτε.......
(κλικ)
ΔΤΦ: ΜΑΝΟΥΛΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑΑ

Δείτε τον κατάλογο των δημοσιεύσεων

Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 2.5 License.

 

 

 

Δημοσίευση στην κατηγορία:
 

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

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

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

Σχόλια:

Χωρίς Σχόλια

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

ÐïëéôéêÞ Ó÷ïëéáóìïý: Äåí åðéôñÝðåôáé ÷ñÞóç êþäéêá HTML. Ôá URIs êáé ïé áëëáãÝò ãñáììÞò ìåôáôñÝðïíôáé áõôüìáôá. Ç äéåýèõíóç e–mail óáò äåí èá åìöáíéóôåß óå äçìüóéá óåëßäá.

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