= Uniba Lab: Stile di programmazione = == Note generali == === UTF-8 === Tutti i file devono avere codifica UTF-8. Cio' si ottiene impostando il proprio editor in maniera tale da codificare i caratteri in utf-8 al momento del salvataggio. Inoltre per i file PY e' opportuno far cominciare il file con lo slug: {{{ # -*- coding: utf-8 -*- }}} Questo istruisce opportunamente il compilatore a runtime. == File py == I file .py sono relativi a tool, config, contents, __init__, browser view, interfaces, e qualsiasi altro modulo si voglia consolidare in un file a se stante. === Imports === - Le imports devono essere effettuate tutte in testa al file (fatto salvo lo slug utf-8 - Le imports dovrebbero essere ordinate alfabeticamente - Le imports devono essere raggruppate tra loro sulla base del namespace di primo livello del pacchetto - i blocchi delle imports devono essere separati da un blank line {{{ from CMFPlone.utils import getToolByName from DateTime import DateTime from zope import schema from zope.interface import Interface }}} === Naming Conventions === 1. Fatte salve le regole generali per cui le variabili devono avere sempre nomi verbosi fatte salve le eccezioni: - list comprehension: {{{[x for x in lista if x.valore == 'alfa']}}} - cicli for numerali: {{{for i in range(1,1000):}}} - abbreviazioni canoniche quali msg:: messaggio pwd:: password flg:: flag[[br]] ecc... [[br]] 2. Lavorando in ambiente Plone ne ereditiamo le naming conventions per la definizione di classi, metodi, interfacce.[[br]] In genere il pattern รจ **{{{CamelCase}}}** per tutte le occorrenze (classi interfacce, metodi, variabili...). [[br]] In particolare: classi:: {{{class primaLetteraMinuscolaAltreCamel(object)}}} interfacce:: {{{class INomeInterfaccia(Interface):}}} Cominciano con I maiuscola e seguono col CamelCase dell nome dell'interfaccia metodi:: - {{{def camelCaseMethod(self,): }}} - {{{def __init__(self,): }}} i metodi privati/convenzionali python sono prefissati con il doppio undersrcore - variabili: == Zope Page Template == estensioni:: - *.pt - *.cpt