"Il suffisso" prefisso "e" On "è una ragionevole eccezione a uno standard di denominazione" non ungherese "?

2

In primo luogo, credo di aver visto questa domanda discussa qui prima, ma non riesco a trovarla. Le mie scuse se lo trovi.

Sto iniziando un nuovo progetto e sto cercando di capire perché IsResolved e / o ResolvedOn hanno più senso per me che Risolto. Ovviamente, quando qualcosa è chiamato "CompanyName" (ad esempio), sono abbastanza fiducioso che lo testerò come una stringa. Tuttavia, quando vedo "Risolto", e so che l'oggetto che descrive potrebbe non avere un valore valido per una data di risoluzione, mi dà fastidio che devo ispezionare il tipo per determinare come testarlo: per undefined / null / etc . (come una data), o come valore booleano.

È ragionevole affermare che Is e On tipicamente fanno più che dichiarare il tipo di variabile; dichiarano l'intento? O forse semplicemente che rende il codice più chiaro per qualche altra ragione per cui non sono abbastanza capace di codificare?

Discutendo dall'altra parte, se guardo il tipo di Risolto, e vedo che è un booleano, avrò la mia risposta. Forse questo non è diverso dal sapere che avrò bisogno di ispezionare una variabile "Fattibilità" per determinare se si tratta di un int, enum o qualcos'altro. (Anche se forse proprio questo significa che "Fattibilità" sarebbe anche un nome sub-ottimale.) E a prescindere, nel caso di "ResolvedOn", devo ancora verificare se è nullable per determinare se devo anche ispezionare un "IsResolved" "valore. Qual è il punto della verbosità, che codifica una seconda volta nel nome della variabile che può essere dedotta dal tipo?

Per favore mi dia una comprensione della mano perché [Proprietà] e [Proprietà] hanno senso per me , sebbene in generale l'ungherese no. Oppure, spiega perché un'eccezione come questa non avrebbe senso?

Nota: lavoro principalmente con SQL, C # e JavaScript.

    
posta shannon 10.05.2013 - 14:24
fonte

4 risposte

10

Prima di tutto, la maggior parte delle reazioni allergiche alla notazione ungherese deriva dal fatto che un'applicazione coerente tende a dare un nome molto innaturale. Gli usi occasionali di prefissi o suffissi che suggeriscono un determinato tipo non dovrebbero essere considerati notazione ungherese a meno che il nome non sia molto forzato.

Quello che stai facendo usando "IsResolved" o "ResolvedOn" invece di "Risolto" è disambiguating quali informazioni vengono trasmesse dal nome (cioè cosa è rappresentato da una classe o oggetto di quel nome, cosa fa un così chiamato funzione return).

Per fare qualche altro esempio:

  • Società
  • CompanyName
  • Risolto
  • IsResolved
  • ResolvedOn

Durante la lettura del codice, "Risolto" sarebbe l'unico in cui non ho idea di cosa rappresenterebbe e dovrei cercarlo. Il contesto fa la differenza e non sto affermando che sono sempre corretto, ma "Risolto" è l'unico nome in quella lista in cui non sarei in grado di dire a colpo d'occhio se sembra essere usato correttamente.

    
risposta data 10.05.2013 - 15:43
fonte
4

Direi che nessuno dei tuoi esempi in realtà coinvolge la notazione ungherese, motivo per cui li trovi accettabili. blnResolved o dtResolved utilizzerebbero la notazione ungherese. IsResolved e ResolvedOn sono semplicemente nomi descrittivi. Se lo desideri, puoi eseguire IsResolved in HasBeenResolved, ma è notevolmente più lungo e non fornirà ulteriori informazioni.

Detto questo, non lasciare che la tua avversione per la notazione ungherese interferisca con i buoni nomi, DateResolved o ResolvedOnDate sono di nuovo, solo nomi descrittivi. Accade solo che includa su alcuni sistemi un'approssimazione del tipo di dati - nota che per TSQL 2000 non è il tipo di dati esatto in quanto non ha un datatype di data.

    
risposta data 20.06.2013 - 03:08
fonte
2

Direi che Risolto è un booleano, così come IsResolved. ResolvedOn potrebbe essere un appuntamento.

Tuttavia, non si può semplicemente dipendere dalla notazione o dal nome di una variabile per determinarne il tipo, specialmente se si sta attraversando il codice di qualcun altro. Immagina le variabili nominate in una lingua diversa (abbiamo avuto uno scambio studentesco dal Messico e lei ha chiamato tutte le sue variabili in spagnolo). Inoltre, c'è un CompanyCode variabile, per esempio. Puoi dire se si tratta di una stringa o di una int?

    
risposta data 10.05.2013 - 14:39
fonte
2

Credo che la ragione per cui ritieni che [Xxxxxxx] abbia un senso per te è dovuta alla tua competenza con SQL. Microsoft SQL ha diverse funzioni IsXxxxxxxxx che rendono la vita molto facile per i suoi utenti.

La tua esposizione alla programmazione di tipo IsXxxxxxxx di Microsoft SQL ha dato forma al tuo processo di pensiero e tendi a propendere per utilizzarlo al di fuori di SQL. Perché, perché ha senso. Probabilmente ti stai chiedendo perché altri linguaggi non hanno funzioni incorporate simili e probabilmente stai anche cercando di creare simili funzioni IsXxxxxx quando mancano le altre lingue che usi.

Sto solo speculando ma il tuo [Xxxxxxxx] On è probabilmente solo una progressione naturale di un pensiero simile per semplificare le proprietà che possono essere On o Off.

    
risposta data 10.05.2013 - 15:57
fonte

Leggi altre domande sui tag