C'è qualche ragione in un programma Java per una denominazione speciale per gli argomenti di una funzione? [chiuso]

5

Mi piacerebbe sapere, perché dovrei avere un prefisso speciale per gli argomenti di una funzione, come "p_name", "p_age", "p_sex"? Da un lato aiuta a distinguere i parametri dalla variabile locale o dal campo più avanti nel corpo della funzione, ma sarebbe d'aiuto? D'altra parte, non ho visto nessuna raccomandazione di denominazione da nessuna parte incluse le convenzioni ufficiali in linguaggio Java. Si prega di segnalare qualsiasi motivo per l'utilizzo di tale politica di denominazione

    
posta gnat 16.04.2012 - 09:36
fonte

6 risposte

20

Hai ragione, distinguere le variabili da parametri e campi a colpo d'occhio è praticamente l'unica motivazione per farlo. E non è molto buono; se il tuo metodo è così lungo che sono necessari suggerimenti sulla memoria, è troppo lungo in primo luogo. C'è una ragione per cui è strongmente raccomandato di mantenere i metodi abbastanza piccoli da poter essere presi completamente in una sola occhiata, e la comprensione dei ruoli di tutte le variabili coinvolte è una grande parte di ciò.

    
risposta data 16.04.2012 - 09:45
fonte
3

Un tale schema ha poco senso per due ragioni:

  • Dovresti contare sul tuo IDE per fornire i mezzi per distinguere i parametri da altre variabili, sia attraverso i suggerimenti intellisense che la colorazione della sintassi.
  • Se desideri distinguere ulteriormente i campi da variabili / parametri locali, puoi aggiungerli con this. . Credo che il suo uso sia all'altezza della discussione, tuttavia almeno nel caso di Java sembra essere una pratica diffusa.

Tuttavia, se è uno standard di codifica implementato nel tuo progetto, puoi metterlo in discussione e discuterlo, ma alla fine dovresti rispettarlo, indipendentemente da quanto possa sembrare insensato.

    
risposta data 16.04.2012 - 09:55
fonte
3

Sospetto che il motivo principale sia una forma lieve di OCD con cui molti programmatori sono afflitti, il che rende l'ordinamento o la creazione di cose in quanto separati, che sono già esplicitamente diversi, si sentono "giusti" anche quando portano un vantaggio pratico minimo o nullo.

Un altro esempio comune di questo è avere i nomi di tutte le enumerazioni precedute da "Enum" e conservarle in un pacchetto separato chiamato "enum".

    
risposta data 16.04.2012 - 11:12
fonte
2

Java consente di assegnare un valore ai parametri formali, ad es.

public int sum(int a, int b) {
    a = a + b; // valid but evil!
    return a;
}

Tuttavia, questa è una cattiva idea in quanto i programmatori di solito si aspettano di accedere ai valori passati al metodo. Una convenzione di denominazione potrebbe aiutare a prevenire la manipolazione accidentale dei parametri. Ma c'è un modo migliore: rendere definitivo il parametro. Il compilatore non ti permetterà di assegnare un parametro finale e non vedo una ragione per cui dovresti.

L'unica ragione per mantenere una tale convenzione di denominazione è la coerenza e quindi la leggibilità. Questo ovviamente richiede che le persone siano già abituate allo stile di prefisso p_. Personalmente ritengo che l'aggiunta di un tale prefisso riduca la leggibilità in quanto si tratta di due personaggi con pochissime informazioni. Questi personaggi sono molto meglio spesi in un buon nome leggibile.

BTW, tali assegnazioni non avranno effetto al di fuori dell'esecuzione del metodo, poiché Java usa la semantica call by value per le primitive e i riferimenti agli oggetti.

    
risposta data 16.04.2012 - 10:58
fonte
2

Non vi è alcun motivo per utilizzare tali prefissi, poiché Java utilizza l'ombreggiamento dei campi delle classi. Utilizza la parola chiave questa e il tuo codice rimane leggibile.

Personalmente preferisco aggiungere un prefisso "_" ad ogni parametro. Utile con il completamento automatico. Quando digito _ filtra l'elenco solo per i parametri.

    
risposta data 04.06.2012 - 12:26
fonte
1

Per la maggior parte dei programmatori Java, la risposta dovrebbe essere "No, non c'è motivo di farlo". Soprattutto il prefisso "p_" - troverete alcuni proponenti per questo (e quelli che lo usano tendono a farlo a causa delle abitudini di altre lingue).

Detto questo, personalmente (ab) uso la funzione di Eclipse di aggiungere un prefisso del parametro metodo ("a") per ricondurre alle abitudini di codifica da Smalltalk (che non può essere battuto in termini di leggibilità), dove gli argomenti del metodo sono tipicamente preceduti dall'articolo "a" o "an" per indicare la loro natura più transitoria (al contrario delle variabili di classe o di istanza). Gli esempi sono aString (perché il metodo funziona su una stringa a passata, non sulla variabile di istanza un po 'più permanente, anElement o' someAccounts '(per una raccolta), ecc. Ovviamente la maggior parte dei non-Smalltalker probabilmente non condonerebbe né comprenderebbe questa idiosincrasia ;-) ma fa aggiunge leggibilità se usato correttamente e, se ci si abitua, aiuta a distinguere i parametri del metodo da quelli altri tipi di variabili (sì, so che la maggior parte degli IDE lo fanno per te, ma non puoi sempre fare affidamento sul codice visualizzato in essi).

Nota che non sto postando questa risposta per convertire tutti i non-Smalltalker, ma semplicemente per offrire un'alternativa del campo sinistro all'utilizzo di questo modo di nominare gli argomenti che potrebbero essere interessanti per alcuni.

    
risposta data 16.04.2012 - 11:29
fonte

Leggi altre domande sui tag