articoli in nomi di variabili e stringhe hard-coding

3

modificato di nuovo dall'autore: no, non si tratta di 2 domande. Questa è una domanda sulle domande di revisione del codice che contengono due punti separati. Per favore non modificare la mia domanda.

Per le variabili di denominazione, i due lati riguardano l'uso degli articoli (a, an, the) nel nome della variabile (ad esempio, il libro vs. il libro - oppure - parseTheString vs. parseString).

Per le stringhe hard-coding, i tre lati sono se mettere tutte le stringhe in costanti (finale statico pubblico) in un file separato (classe o interfaccia), metterle tutte nello stesso file (finale statico privato) o don usare le costanti per le stringhe. (Ad esempio, nuovo pulsante ("Click Me") rispetto al nuovo pulsante (BUTTON_LABEL_CLICK)). Discutiamo anche un po 'il problema della notazione ungherese, ma ho visto quello che ho discusso qui in altre domande.

Per molto tempo è stato lo standard defacto di non usare articoli nei nomi delle variabili (aggiunge disordine visivo senza aggiungere valore) e di non avere stringhe codificate sparse attraverso il codice sorgente (un potenziale incubo di manutenzione e molto scarso per l'internazionalizzazione). Ora stiamo iniziando a vedere le violazioni di questi e gli sviluppatori sembrano davvero sorpresi quando qualcuno li contrassegna come difetti o almeno che richiedono attenzione. Il manager ha detto che non si preoccupa in un modo o nell'altro e questi punti non sono negli standard di codifica della nostra azienda.

    
posta Iceberg 12.06.2013 - 23:54
fonte

3 risposte

10

Articoli nei nomi di variabili

Nella maggior parte dei casi aggiungono poco o nessun valore, ma rendono il codice più lungo da leggere.

Di solito, raramente ho bisogno della distinzione tra "a" o "il" nel flusso di una funzione, quindi non ha senso usare gli articoli.

È un linguaggio di programmazione formale e io sto bene senza leggere esattamente come un linguaggio naturale. In effetti, probabilmente è meglio così, non tutto è necessariamente così eccezionale sui linguaggi naturali.

Ci sono alcuni casi in cui la leggibilità può trarre beneficio dall'uso degli articoli, ad esempio se si desidera implementare un correttore per una relazione "è una" con una firma del metodo come boolean isA(Object o, Class<?> cl) (non sto sostenendo questa è una buona idea) .

Stringhe con codifica hard

Dipende se si prevede di riutilizzarli o meno, e se tale riutilizzo è guidato dalla semantica (e non solo dal fatto che la Stringa ha lo stesso contenuto in luoghi diversi) e diffusa in più classi o sottosistemi.

In tal senso, di solito uso queste regole:

  1. Se hai la stessa stringa più volte e ha lo stesso significato acros di più classi, quindi estrai in costanti in un'interfaccia.

  2. Se hai la stessa stringa più volte all'interno di una singola classe e ha lo stesso significato all'interno di quella classe, quindi estrai alle costanti all'interno della classe.

  3. Se hai solo un numero limitato di ripetizioni come tring, o se sono identiche ma non è garantito che siano sempre in futuro, allora le lascerei in linea.

  4. Se una delle situazioni precedenti renderebbe difficile la manutenzione, imposta le regole da 1 a 3 e fai tutto il possibile per te.

Ovviamente, assicurati che il nome della costante renda il codice semanticamente valido come la stringa che contiene. Ciò vale anche per altre cose che non sono stringhe (come i Predicati, per esempio).

    
risposta data 13.06.2013 - 00:05
fonte
2

For hard-coding strings, the three sides are whether to put all strings into constants (public static final) in a separate file (class or interface), put them all in the same file (private static final), or don't use constants for strings at all. (e.g. new Button("Click Me") vs. new Button(BUTTON_LABEL_CLICK)). We also discuss the Hungarian notation issue quite a bit but I've seen that discussed here in other questions.

Se si desidera un'esperienza utente di alta qualità, tutto ciò che viene presentato all'utente (etichette dei pulsanti, messaggi di errore, ecc.) deve essere esaminato dal progettista dell'interfaccia utente. Nella mia esperienza, quando gli sviluppatori stanno scrivendo il codice, ciò non accade. Gli sviluppatori fanno il meglio che possono, ma il risultato è un insieme di messaggi ed etichette che sono poco più che casuali.

    
risposta data 13.06.2013 - 17:41
fonte
1

Apple usa gli articoli - in modo incoerente - nel loro codice ObjC. Aggiunge niente alla leggibilità del loro codice o alla descrittività dei loro nomi di variabili:

- (id)viewWithTag:(NSInteger)aTag;
- (id)initWithFrame:(NSRect)frameRect mode:(int)aMode cellClass:(Class)factoryId numberOfRows:(int)rowsHigh numberOfColumns:(int)colsWide;

Nota aTag e aMode rispetto a frameRect .

Odio il semi-standard e non lo uso. Rende il codice suonato come un idiota.

    
risposta data 13.06.2013 - 19:44
fonte