acid18 Δημοσ. 21 Μαρτίου 2014 Δημοσ. 21 Μαρτίου 2014 Ποιός είναι ο καλύτερος τρόπος για να γραφτει ο κώδικας Έστω ότι έχουμε μια σελίδα html και θέλω να κάνω parsing 1ος τροπος: var myTable = bodyNode.SelectNodes("//table")[5]; var rows = myTable.SelectNodes("//tr"); 2ος τροπος: var rows = bodyNode.selectNodes("//table")[5].selectNodes("//tr"); υπάρχει σωστός τρόπος ή το κάνω όπως θέλω?
nucleus Δημοσ. 21 Μαρτίου 2014 Δημοσ. 21 Μαρτίου 2014 Γιατί πρέπει να κάνεις parsing την σελίδα από C# ,άρα υποθέτω στον server? Σου προτείνανε jQuery επειδή μπορεί να επιλέγει elements από την html,aspx στον client,να βρίσκει τα δεδομένα που θέλεις και μετά να τα στείλει στον server με κάποιο ajax request.
georgemarios Δημοσ. 21 Μαρτίου 2014 Δημοσ. 21 Μαρτίου 2014 Δεν υπαρχει "σωστος" τροπος αλλα οριστε 2 σκεψεις: Αν η μεταβλητη myTable δεν χρησιμοποιειται παρακατω για καποιο λογο, η 2η προσεγγιση θα μπορουσε να θεωρηθει καθαροτερη/ασφαλεστερη, με την εννοια πως αν ακολουθουν αλλες 100 γραμμες κωδικα στη μεθοδο σου, δεν εχεις να ανησυχεις αν αλλαζεις/διαβαζεις μια λαθος μεταβλητη, ουτε αν ξαναδιαβαζεις το κωδικα μετα απο καιρο χρειαζεται να τσεκαρεις που αλλου χρησιμοποιειται αυτη η μεταβλητη. Απ την αλλη, προσπαθωντας να γραφουμε πιο self-documented code, η 1η προσεγγιση θα μπορουσε να υπερτερει αλλα μονο αν τα ονοματα των μεταβλητων ειναι περιγραφικα, πχ αντι για myTable να ειναι playerAccountsTable. Και παλι, αν δε χρησιμοποιειται αλλου, καλο ειναι να προσπαθησουμε να βαλουμε το κομματι του κωδικα σε block {} ωστε να περιορισουμε το scope. 1
acid18 Δημοσ. 21 Μαρτίου 2014 Μέλος Δημοσ. 21 Μαρτίου 2014 Γιατί πρέπει να κάνεις parsing την σελίδα από C# ,άρα υποθέτω στον server? Σου προτείνανε jQuery επειδή μπορεί να επιλέγει elements από την html,aspx στον client,να βρίσκει τα δεδομένα που θέλεις και μετά να τα στείλει στον server με κάποιο ajax request. Στο συγκεκριμένο παράδειγμα παίρνω τα δεδομένα από σελίδα και τα αποθηκευω σε βάση sqlite την οποία θα χρησιμοποιήσω σε άλλη εφαρμογή, απλά το κάνω έτσι για να μην το κάνω με το χέρι copy paste.
ZAKKWYLDE Δημοσ. 21 Μαρτίου 2014 Δημοσ. 21 Μαρτίου 2014 O 2ος τρόπος είναι αυτό που λέγεται "train wreck" και συνήθως καλό είναι να αποφεύγεται. Ε τώρα αυτό: var rows = bodyNode.selectNodes("//table")[5].selectNodes("//tr"); δεν είναι και τραγικό οπότε το αφήνεις, αλλά αν είχες κανα 2 chained function calls ακόμα καλό θα ήταν να το άλλαζες.
sonyxp Δημοσ. 28 Μαρτίου 2014 Δημοσ. 28 Μαρτίου 2014 (επεξεργασμένο) Καταρχάς πρέπει ο κώδικας να είναι ευανάγνωστος, αν εσύ γράψεις έναν κώδικα που διαβάζεται εύκολα και η εκτέλεση του θέλει 100ms και κάποιος άλλος γράψει κακογραμμένο-δύσκολο κώδικα που θα κάνει 90ms , ο κώδικάς σου θα είναι καλύτερος. Η ταχύτητα είναι μεγάλος παράγοντας αλλά όπου χρειάζεται! υπήρξε μια περίοδος που υπερέβαλα απίστευτα με το να βγάλω τον ταχύτερο κώδικα σε χαζά πράγματα... όπου χρειάζεται το κάνεις! +(χωρίς να σημαίνει ότι θα βγάλει μπακαλίστικο-μέτριο κώδικα) Προσωπικά σε αυτό που Post-αρες δεν έχω θέμα, και τα 2 τα διαβάζω με άνεση. Γενικά αν μπορείς να κάνεις κάτι inline και δεν δυσκολεύει την ανάγνωση τότε είναι προτιμότερο. Προσωπικά θα προτιμούσα το 2ο, αλλά και το 1ο μια χαρά θα το χρησιμοποιούσα (40% - 60%) Επεξ/σία 30 Μαρτίου 2014 από sonyxp
Papakaliati Δημοσ. 28 Μαρτίου 2014 Δημοσ. 28 Μαρτίου 2014 Πιστευω οτι η γενικη αρχη που πρεπει να ακολουθησεις ειναι αν μπορεις να κανεις κατι με μια γραμμη κωδικα αντι για 2 τοτε αυτο ειναι παντα προτιμοτερο. Δεν εχει σημασια αν οπως ανεφερε ο φιλος παραπανω εξηγεις πιο αναλυτικα, στην μια περιπτωση αυτος που θα διαβασει το προγραμμα σου θα εχει να διαβασει πχ 100 γραμμες κωδικα, στην αλλη 200.Αμα θελεις να γινεις πιο αναλυτικος χρησιμοποιεις ενα comment διπλα απο την εντολη. PS. Aυτο δεν σημαινει να χανεις χρονο προσπαθοντας ντε και καλα να βρεις τροπο να γραψεις λιγοτερες γραμμες, η να το εφαρμοζεις παντου ενω δεν ξερεις αμα γινεται. Απλα λιγοτερες γραμμες κωδικα καλυτερο παντα προγραμμα ( Αν εκτελουν ακριβως το ιδιο πραγμα με την ιδια ταχυτητα) .
acid18 Δημοσ. 28 Μαρτίου 2014 Μέλος Δημοσ. 28 Μαρτίου 2014 Ναι τώρα άρχισα να διαβάζω για Design Patterns και refactoring και αποτι βλέπω πολλοί συμφωνουν ότι δεν είναι καλό να χρησιμοποιούμε πολλά temps. Και εδώ το αναφέρει http://en.wikipedia.org/wiki/Code_smell
Papakaliati Δημοσ. 28 Μαρτίου 2014 Δημοσ. 28 Μαρτίου 2014 Ναι τώρα άρχισα να διαβάζω για Design Patterns και refactoring και αποτι βλέπω πολλοί συμφωνουν ότι δεν είναι καλό να χρησιμοποιούμε πολλά temps. Και εδώ το αναφέρει http://en.wikipedia.org/wiki/Code_smell Και συμβουλη μου, ειτε ειναι εργασια ειτε ειναι whatever comments ειναι καλο να συνηθισεις να κανεις.
ZAKKWYLDE Δημοσ. 28 Μαρτίου 2014 Δημοσ. 28 Μαρτίου 2014 Ναι τώρα άρχισα να διαβάζω για Design Patterns και refactoring και αποτι βλέπω πολλοί συμφωνουν ότι δεν είναι καλό να χρησιμοποιούμε πολλά temps. Και εδώ το αναφέρει http://en.wikipedia.org/wiki/Code_smell Σε γενικές γραμμές θα σου πώ ότι δεν υπάρχει χρυσός κανόνας. Πάντα ανα περίπτωση επιλέγεις τι θα κάνεις για συγκεκριμένο λόγο. Φυσικά καλό είναι και το readability αλλά πάντα είναι υποκειμενικό. Κάτι που εσένα σου φαίνεται φυσικό σε κάποιον άλλον θα φαίνεται περίεργο. Π.χ μιας και ανεφέρθηκε η μία γραμμή. Βλέπω πολλούς να γράφουν σε μία γραμμή if (x == y) dothis(); και σου λέει οκ μια γραμμή είναι γιατί να μην το κάνω...ε εμένα με με μπερδεύει πάρα πολύ όταν βλέπω κάτι τέτοιο. Having said that, και μιας και έδειξες chain function calls διάβασε και το Law of Demeter http://en.wikipedia.org/wiki/Law_of_Demeter 1
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα