In Mathematica I simboli incorporati iniziano con lettere maiuscole. Pertanto è prassi comune non iniziare i nomi dei simboli creati dall'utente con lettere maiuscole.Lettere maiuscole per i modelli con nome
Quanto deve essere estesa questa limitazione ad altri aspetti della sintassi? Le buone pratiche richiedono che una lettera maiuscola non venga utilizzata per un modello denominato in un'espressione SetDelayed
o RuleDelayed
(dove tali nomi sono localizzati)?
Penso che le maiuscole espandano il namespace in un modo utile e visualizzano visivamente le lettere minuscole L e 1, ad esempio. Consentono inoltre che gli argomenti vengano nominati in maniera da manuale.
Se vengono introdotti nuovi simboli nelle versioni future, i patter denominati devono sostituirli e il codice esistente non deve interrompersi.
Un cono è ambiguità se vengono utilizzati nomi esistenti come N
e D
, ma ritengo che sia il contesto di utilizzo sia l'evidenziazione della sintassi FrontEnd lo attenuino.
+1 Ma 1 pensa che 1 L minuscolo è facile da distinguere da 1 se i tuoi nomi sono abbastanza descrittivi. Inoltre, l'utilizzo dell'espansione dello spazio dei nomi dovrebbe essere considerato con attenzione: nominare un symbo1 myHome e un altro MyHome è una ricetta di stufato di bug c1assica1 ... –
@belisarius Dal momento che ho una predilezione per il terse coding, la maggior parte dei miei nomi di pattern sono un singolo carattere, quindi 'l' e' 1' sono abbastanza simili. Allo stesso modo, è dubbio che confonderei i simboli in 'f [A_, a_]: = ...'. Usato globalmente, sono d'accordo con te e renderò i miei nomi globali più dettagliati, ma in questo caso specifico mi chiedo se posso cambiare la mia pratica. –
Il riflesso "la maggior parte" non è preciso, ma molte sono lettere singole, specialmente in breve, regole di sostituzione ben incapsulate. Vedi [questa risposta] (http://stackoverflow.com/questions/5644801/tweaking-style-attributes-of-existing-graphics-objects-in-mathematica/5645482#5645482); Mi piacerebbe cambiare 'l: Line [__]' in 'L_Line' in quel codice. –