Υπαγόρευσε τα code reviews στη γλώσσα σου
Ο κώδικας είναι αγγλικά. Τα σχόλιά σου δεν χρειάζεται να είναι. Πώς να υπαγορεύεις review σε μία από 25 γλώσσες on-device, και γιατί μετράει το καρφίτσωμα.
Υπάρχει μια σιωπηρή υπόθεση ψημένη μέσα στα περισσότερα εργαλεία για προγραμματιστές: ο κώδικας είναι στα αγγλικά, άρα και ο προγραμματιστής πρέπει να είναι. Οι λέξεις-κλειδιά είναι αγγλικές. Τα ονόματα των βιβλιοθηκών είναι αγγλικά. Τα μηνύματα σφάλματος είναι αγγλικά. Και έτσι, λέει το σκεπτικό, η υπαγόρευση για προγραμματιστές μπορεί να είναι μόνο στα αγγλικά και δεν θα ενοχληθεί κανείς.
Το code review καταρρίπτει αυτή την υπόθεση αμέσως. Ένα σχόλιο review δεν είναι κώδικας. Είναι μια πρόταση απευθυνόμενη σε άνθρωπο, και σε πάρα πολλές ομάδες αυτός ο άνθρωπος μοιράζεται τη μητρική σου γλώσσα. Μια ρουμανική ομάδα που κάνει review σε μια υπηρεσία Rust γράφει ρουμανικά σχόλια για αγγλικά identifiers. Μια πολωνική ομάδα κάνει το ίδιο στα πολωνικά, μια γερμανική στα γερμανικά. Ο κώδικας μένει αγγλικός· η συζήτηση γύρω από τον κώδικα όχι.
Η υπαγόρευση είναι ασυνήθιστα καλή για σχόλια review, επειδή το review είναι δραστηριότητα ανάγνωσης και η πληκτρολόγηση τη διακόπτει. Αλλά είναι καλή μόνο αν δουλεύει στη γλώσσα στην οποία είναι πραγματικά το σχόλιο. Αυτό το κείμενο αφορά το πώς γίνεται αυτό: ποιες γλώσσες καλύπτει το Keebye on-device, πώς συμπεριφέρεται το καρφίτσωμα γλώσσας και πού είναι τα όρια. Αν θέλεις το επιχείρημα για το γιατί όλα αυτά έχουν σημασία, το η υπαγόρευση για προγραμματιστές δεν πρέπει να είναι μόνο στα αγγλικά το κάνει· αυτό εδώ είναι η πρακτική συνέχεια.
Γιατί τα σχόλια review είναι ο ιδανικός στόχος υπαγόρευσης
Ένα σχόλιο review έχει τρεις ιδιότητες που το κάνουν να ταιριάζει με τη φωνή καλύτερα από σχεδόν κάθε άλλο κείμενο προγραμματιστή.
Είναι σύντομο. Τα περισσότερα σχόλια είναι μία με τρεις προτάσεις. Αυτό είναι μία ανάσα, ένα κράτημα hotkey, μία εκφώνηση.
Είναι πεζός λόγος. Σε αντίθεση με ένα commit message με άκαμπτη μορφή ή ένα αρχείο config με ακριβή σύνταξη, ένα σχόλιο review είναι απλώς το πώς θα εξηγούσες το πρόβλημα φωναχτά. «Αυτό ξαναπροσπαθεί για πάντα αν το socket δεν απαντήσει ποτέ· βάλε του όριο.» Η εκφωνημένη και η πληκτρολογημένη εκδοχή είναι σχεδόν πανομοιότυπες.
Συμβαίνει ενώ τα μάτια σου είναι απασχολημένα. Διαβάζεις ένα diff. Τη στιγμή που σταματάς για να γράψεις, χάνεις τη θέση σου μέσα του. Η υπαγόρευση σε αφήνει να συνεχίσεις να διαβάζεις και να πεις το σχόλιο μέσα στο κουτί που έχεις ήδη κλικάρει.
Πρόσθεσε τώρα τη διάσταση της γλώσσας. Αν η ομάδα σου κάνει review στα πολωνικά, ένα εργαλείο υπαγόρευσης μόνο για αγγλικά σε αναγκάζει να διαλέξεις: review στα αγγλικά (αφύσικο, και οι συνάδελφοί σου ίσως το διαβάζουν πιο αργά) ή πληκτρολόγηση (χάνοντας το όφελος). Κανένα από τα δύο δεν είναι αυτό που ήθελες.
Τι υποστηρίζει πραγματικά το Keebye
Δύο on-device μηχανές μετράνε εδώ, και αξίζει να είμαστε ακριβείς γι' αυτές.
Η προεπιλεγμένη μηχανή είναι ρυθμισμένη για αγγλικά. Είναι γρήγορη, είναι αυτή που χρησιμοποιούν οι περισσότεροι, και δεν είναι αυτή που θέλεις για ένα πολωνικό σχόλιο review. Στραμμένη σε μη αγγλική ομιλία, θα παράγει φωνητικά εύλογα αγγλικά που δεν είναι αυτό που είπες.
Η δεύτερη μηχανή, το Canary, καλύπτει ακριβώς 25 γλώσσες: Βουλγαρικά, Κροατικά, Τσεχικά, Δανικά, Ολλανδικά, Αγγλικά, Εσθονικά, Φινλανδικά, Γαλλικά, Γερμανικά, Ελληνικά, Ουγγρικά, Ιταλικά, Λετονικά, Λιθουανικά, Μαλτεζικά, Πολωνικά, Πορτογαλικά, Ρουμανικά, Ρωσικά, Σλοβακικά, Σλοβενικά, Ισπανικά, Σουηδικά και Ουκρανικά. Είναι επιλογή, κατεβαίνει μία φορά, και μετά τρέχει offline όπως όλα στο Keebye. Όχι εκατό γλώσσες· είκοσι πέντε, γραμμένες μία μία, και αν η δική σου δεν είναι στη λίστα, αυτό το κείμενο δεν μπορεί να σε βοηθήσει ακόμη.
Υπάρχει επίσης η επιλογή να χρησιμοποιήσεις τη native αναγνώριση ομιλίας της Apple ως μηχανή, που φέρνει τη δική της γλωσσική κάλυψη στο Mac σου. Αυτή είναι ξεχωριστή διαδρομή με διαφορετικά χαρακτηριστικά· τα υπόλοιπα εδώ αφορούν το Canary.
Καρφίτσωσε τη γλώσσα· μην την αφήνεις να μαντεύει
Η πιο σημαντική ρύθμιση για μη αγγλικό review είναι το καρφίτσωμα γλώσσας.
Η αυτόματη ανίχνευση ακούγεται σαν η σωστή προεπιλογή και είναι η λάθος για προγραμματιστές. Τα σχόλια review είναι πυκνά σε αγγλικά identifiers: ονόματα συναρτήσεων, ονόματα πακέτων, οι λέξεις «null» και «async» και «callback». Ένα σχόλιο που είναι ογδόντα τοις εκατό ρουμανικό και είκοσι τοις εκατό αγγλικά tokens δίνει σε έναν ανιχνευτή γλώσσας ακριβώς το ανάμεικτο σήμα που χειρίζεται χειρότερα. Θα γυρίσει στη μέση της πρότασης ή θα αποφασίσει ότι όλο ήταν αγγλικά, και θα πάρεις μια μεταγραφή με αυτοπεποίθηση λάθος. Το Καρφίτσωσε τη γλώσσα υπαγόρευσής σου περιγράφει την αποτυχία αναλυτικά.
Με το Canary, το Keebye σε αφήνει να ορίσεις ρητά τη γλώσσα. Καρφίτσωσε ρουμανικά και το μοντέλο αποκωδικοποιεί ρουμανικά· τα αγγλικά identifiers μέσα στην πρότασή σου αντιμετωπίζονται ως δάνειες λέξεις και όχι ως ένδειξη ότι άλλαξες γλώσσα. Η αναγνώριση ενός ασυνήθιστου identifier μπορεί ακόμη να είναι ατελής, αλλά η ίδια η γλώσσα παύει να είναι κορώνα-γράμματα.
Μια λεπτομέρεια συμπεριφοράς που αξίζει να ξέρεις: η καρφιτσωμένη γλώσσα διαβάζεται για την επόμενη εκφώνηση. Άλλαξε το καρφίτσωμα και η υπαγόρευση που πας να κάνεις τη χρησιμοποιεί· αυτή που ήδη άφησες δεν ξαναμεταγράφεται. Πρακτικά αυτό σημαίνει: άλλαξε, μετά μίλα. Αν κάνεις review σε δύο γλώσσες μέσα στη μέρα, η εναλλαγή είναι φθηνή. Το tray στη γραμμή μενού εκθέτει μια σύντομη λίστα 11 γλωσσών για γρήγορη εναλλαγή, και οι Ρυθμίσεις εκθέτουν και τις 25.
Ένα session review, υπαγορευμένο
Να πώς μοιάζει ένα session σε μια ομάδα που κάνει review στα ρουμανικά.
Ανοίγεις το pull request. Το tray δείχνει ήδη ρουμανικά καρφιτσωμένα από χθες, οπότε δεν έχεις τίποτα να κάνεις. Διαβάζεις το πρώτο αρχείο. Τρίτο hunk, ένας βρόχος επανάληψης χωρίς όριο. Κλικάρεις στο κουτί σχολίου, κρατάς το δεξί Command, λες το σχόλιο στα ρουμανικά, αφήνεις. Το κείμενο προσγειώνεται, με το «εεε» και μια ψευδή εκκίνηση να έχουν αφαιρεθεί από το καθάρισμα με κανόνες, και το identifier reconnectSocket άθικτο επειδή το πρόσθεσες στο προσαρμοσμένο λεξικό πριν μια βδομάδα.
Επόμενο αρχείο. Το σχόλιο που θέλεις να αφήσεις είναι πρόταση κώδικα, όχι πεζός λόγος. Αυτό το πληκτρολογείς· η υπαγόρευση ενός diff είναι κακή εμπειρία σε κάθε γλώσσα.
Αργότερα, ένας συνεργάτης από άλλη ομάδα μπαίνει στο νήμα και γράφει στα αγγλικά. Θέλεις να απαντήσεις στα αγγλικά. Κλικ στο tray, διάλεξε αγγλικά από τη σύντομη λίστα, και η επόμενη εκφώνηση αποκωδικοποιείται ως αγγλική. Απάντησε, μετά γύρνα πίσω.
Τίποτα από αυτά δεν χρειάζεται παράθυρο. Το Keebye μένει στη γραμμή μενού· το hotkey δουλεύει σε όποια εφαρμογή έχει την εστίαση, είτε είναι μια καρτέλα browser με το review, είτε ένας desktop Git client, είτε ένα terminal που τρέχει ένα CLI εργαλείο review.
Ειλικρινή όρια
Είκοσι πέντε γλώσσες, όχι όλες. Αν κάνεις review στα τουρκικά, τα ιαπωνικά, τα αραβικά ή σε οποιαδήποτε γλώσσα εκτός της λίστας του Canary, η δεύτερη μηχανή δεν σε καλύπτει. Η native μηχανή της Apple ίσως, ανάλογα με τη γλωσσική υποστήριξη του συστήματός σου, αλλά αυτή είναι άλλη μηχανή με άλλη συμπεριφορά.
Η σύντομη λίστα του tray είναι έντεκα. Αγγλικά, Ρουμανικά, Γαλλικά, Γερμανικά, Ισπανικά, Ιταλικά, Πορτογαλικά, Ολλανδικά, Πολωνικά, Ρωσικά και Ουκρανικά είναι δύο κλικ μακριά. Οι άλλες δεκατέσσερις είναι στις Ρυθμίσεις. Αν το καθημερινό σου ζευγάρι περιλαμβάνει, ας πούμε, τσεχικά και φινλανδικά, η μία πλευρά περνάει από τις Ρυθμίσεις.
Τα identifiers παραμένουν identifiers. Ένα μοντέλο ομιλίας σε οποιαδήποτε γλώσσα δυσκολεύεται με snake_case_names. Το λεξικό βοηθάει με τα επαναλαμβανόμενα· τα υπόλοιπα τα διορθώνεις με το χέρι. Διάβασε το σχόλιο πριν το δημοσιεύσεις.
Καμία ζωντανή μεταγραφή. Το Canary μεταγράφει στην απελευθέρωση του πλήκτρου, ως μία παρτίδα. Δεν θα δεις λέξεις καθώς τις λες. Για ένα σχόλιο review μιας με τριών προτάσεων, αυτό μόλις που γίνεται αντιληπτό.
Το γυάλισμα είναι προαιρετικό και κυριολεκτικό εξ ορισμού. Αν ενεργοποιήσεις το γυάλισμα με τοπικό LLM on-device, τακτοποιεί τη δομή των προτάσεων και μια δικλείδα πιστότητας επιστρέφει στην ακατέργαστη μεταγραφή όταν το αποτέλεσμα δείχνει σοβαρή απώλεια tokens, διόγκωση ή επανάληψη. Αυτή η δικλείδα είναι ευριστική· δεν ελέγχει ότι επέζησε το νόημά σου. Για σχόλια review, όπου μια αντεστραμμένη άρνηση αλλάζει την ετυμηγορία, οι περισσότεροι κρατούν το γυάλισμα κλειστό και αφήνουν τη δουλειά στο καθάρισμα με κανόνες.
Πού ταιριάζει αυτό
Αν το καρφίτσωμα γλώσσας είναι η λειτουργία που σε νοιάζει περισσότερο, το Keebye vs Wispr Flow συγκρίνει τα δύο ως προς το πού τρέχει η ομιλία και πώς χειρίζονται τη γλώσσα, μαζί με το πού ταιριάζει καλύτερα το Wispr Flow. Για την ευρύτερη περίπτωση της υπαγόρευσης με τα χέρια στο diff, ο οδηγός για προγραμματιστές καλύπτει την καθημερινότητα, και ο οδηγός για Mac καλύπτει το setup.
Η υπόθεση ότι οι προγραμματιστές είναι μόνο αγγλόφωνοι δεν ήταν ποτέ αληθινή. Ήταν απλώς βολική για τα εργαλεία. Το να κάνεις review στη δική σου γλώσσα, με τη φωνή, με ομιλία που δεν φεύγει ποτέ από το μηχάνημά σου, δεν είναι αίτημα για λίγους. Είναι αυτό που θα έκανε ένα μεγάλο μέρος των ανθρώπων που γράφουν λογισμικό, αν τα εργαλεία τούς άφηναν.
Κάνε review στη γλώσσα που σκέφτεσαι
Ξεκίνα τη δωρεάν δοκιμή σου, καρφίτσωσε τη γλώσσα σου και υπαγόρευσε ένα σχόλιο review όπως θα το έλεγες σε συνάδελφο.
Start free trialEarly access: we'll email you the moment the macOS build is ready — your 14 days start when you first sign in from the app.
Συνέχισε την ανάγνωση
Η αυτόματη ανίχνευση αστοχεί: καρφίτσωσε τη γλώσσα σου
Υπαγόρευση σε λάθος γλώσσα; Η αυτόματη ανίχνευση ταλαντεύεται στη δίγλωσση ομιλία εκ σχεδιασμού. Καρφίτσωσε τη γλώσσα μία φορά και μένει έτσι.
Γιατί η υπαγόρευση για developers δεν αρκεί στα αγγλικά
Ο κώδικας είναι αγγλικός· η δουλειά συχνά όχι. Πολυγλωσσική υπαγόρευση στη συσκευή για μηνύματα Slack, reviews και έγγραφα στη γλώσσα σου.
Υπαγόρευση prompts σε παράλληλους agents, lane προς lane
Όταν τρέχεις δύο ή τρεις agents μαζί, το prompting γίνεται το σημείο συμφόρησης. Ένα φωνητικό workflow για να τροφοδοτείς παράλληλα lanes χωρίς να φεύγεις.