summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordakkar <dakkar@luxion>2008-09-13 12:11:05 +0000
committerdakkar <dakkar@luxion>2008-09-13 12:11:05 +0000
commitfd4d555c0c791c759b0d06a8f606a2d087f62106 (patch)
tree3cb27dc1da7ec1546fc0670b4c7af4d6d9c705ee
parentbest practices (diff)
downloadbest-practices-master.tar.gz
best-practices-master.tar.bz2
best-practices-master.zip
messe sezioniHEADmaster
git-svn-id: svn://luxion/repos/best-practices@372 fcb26f47-9200-0410-b104-b98ab5b095f3
-rw-r--r--pbp.content.tex65
1 files changed, 55 insertions, 10 deletions
diff --git a/pbp.content.tex b/pbp.content.tex
index e6c9da3..ce70c13 100644
--- a/pbp.content.tex
+++ b/pbp.content.tex
@@ -47,9 +47,13 @@ Questo intervento è ispirato a ``Perl Best Practices'', di Damian Conway, edizio
\end{frame}
\begin{frame}\frametitle{Per gli impazienti}
+\begin{center}
{\huge Scrivi sempre codice come se la persona che lo deve mantenere fosse un violento psicopatico che sa dove abiti}
+\end{center}
\end{frame}
+\section{Spaziatura}
+
\begin{frame}[fragile]\frametitle{Spaziatura}
\begin{lstlisting}
my@result=(1,2,3);
@@ -85,6 +89,8 @@ while (my_func($param,$param2)) {
\end{lstlisting}
\end{frame}
+\section{Nomi}
+
\begin{frame}[fragile]\frametitle{Nomi}
\begin{itemize}
\item date nomi comprensibili e non ambigui (\lstinline|$totale_finora|, \lstinline|$utente_attuale|, \lstinline|&è_valido|)
@@ -96,6 +102,8 @@ while (my_func($param,$param2)) {
\end{itemize}
\end{frame}
+\section{Valori}
+
\begin{frame}[fragile]\frametitle{Valori}
\begin{itemize}
\item usate \lstinline|'virgolette semplici'| tranne quando \lstinline|"dovete $interpolare\n"| %$
@@ -105,6 +113,8 @@ while (my_func($param,$param2)) {
\end{itemize}
\end{frame}
+\section{Variabili}
+
\begin{frame}[fragile]\frametitle{Variabili}
\begin{itemize}
\item dichiarate sempre le variabili con \lstinline|my|
@@ -116,6 +126,8 @@ while (my_func($param,$param2)) {
\end{itemize}
\end{frame}
+\section{Flusso}
+
\begin{frame}[fragile]\frametitle{Controlli di flusso}
\begin{itemize}
\item usate \lstinline|if| posposto solo per semplici istruzioni, tipicamente controlli nei cicli: \lstinline|next CICLO if !mi_serve($elemento);| %$
@@ -155,17 +167,19 @@ sub esegui_comando {
\item usate i comandi di controllo cicli (\lstinline|next|, \lstinline|last|, \lstinline|continue|, \lstinline|redo|)
\item etichettate sempre i cicli in cui usate quei comandi:
\begin{lstlisting}
- CLIENTE:
- while (my $cliente_corrente =
- $clienti->next()) {
- next CLIENTE
- if ! $cliente_corrente->attivo;
- usa_cliente($cliente_corrente);
- }
- \end{lstlisting}
+CLIENTE:
+while (my $cliente_corrente =
+ $clienti->next()) {
+ next CLIENTE
+ if ! $cliente_corrente->attivo;
+ usa_cliente($cliente_corrente);
+}
+\end{lstlisting}
\end{itemize}
\end{frame}
+\section{Documentazione}
+
\begin{frame}[fragile]\frametitle{Documentazione e commenti}
\begin{itemize}
\item usate POD per la documentazione utente
@@ -176,6 +190,8 @@ sub esegui_comando {
\end{itemize}
\end{frame}
+\section{Built-in}
+
\begin{frame}[fragile]\frametitle{Funzioni predefinite}
\begin{itemize}
\item studiate la ``Orcish manoeuvre'' e la ``Schwartzian transform''
@@ -191,6 +207,8 @@ sub esegui_comando {
\end{itemize}
\end{frame}
+\section{Subroutine}
+
\begin{frame}[fragile]\frametitle{Subroutine}
\begin{itemize}
\item \lstinline|fai_qualcosa(@argomenti)|, non \lstinline|&fai_qualcosa @argomenti|
@@ -202,9 +220,17 @@ sub esegui_comando {
\end{itemize}
\end{frame}
+\section{I/O}
+
\begin{frame}[fragile]\frametitle{I/O}
\begin{itemize}
-\item \lstinline|open my $fh,'<',$nomefile| \lstinline|or croak qq{Impossibile aprire "$nomefile": $!};| invece che \lstinline|open FH,$nomefile;| %$
+\item \begin{lstlisting}
+open my $fh,'<',$nomefile
+or croak qq{Impossibile aprire "$nomefile": $!};
+\end{lstlisting}
+invece che \begin{lstlisting}
+open FH,$nomefile;
+\end{lstlisting} %$
\item<2> filehandle lessicali
\item<2> \lstinline|open| a 3 argomenti
\item<2> controllate sempre il valore di ritorno
@@ -221,6 +247,8 @@ sub esegui_comando {
\end{itemize}
\end{frame}
+\section{References}
+
\begin{frame}[fragile]\frametitle{References}
\begin{itemize}
\item non usate \emph{mai} reference simboliche (\lstinline|"${nome}_tipo"=5|) %$
@@ -229,6 +257,8 @@ sub esegui_comando {
\end{itemize}
\end{frame}
+\section{Regex}
+
\begin{frame}[fragile]\frametitle{Espressioni regolari}
\begin{itemize}
\item usate sempre \lstinline|/xms|
@@ -237,11 +267,20 @@ sub esegui_comando {
\item \lstinline|m{...}smx|, non \lstinline|/.../|
\item \lstinline|\p{Uppercase}\p{Alphabetic}|, non \lstinline|[A-Z][a-zA-Z]|
\item attenti alla differenza tra \lstinline|.*| e \lstinline|.*?|
-\item \lstinline|my ($nome,$valore) =| \lstinline|($linea=~m{\A (\w+) \s*=\s* (.*?) \z}smx)|, non \lstinline|$linea=~m{^(\w+)\s*=\s*(.*?)$};| \lstinline|my ($nome,$valore)=($1,$2)| %$
+\item \begin{lstlisting}
+my ($nome,$valore) =
+ ($linea=~m{\A (\w+) \s*=\s* (.*?) \z}smx)
+\end{lstlisting}
+invece che \begin{lstlisting}
+$linea=~m{^(\w+)\s*=\s*(.*?)$};
+my ($nome,$valore)=($1,$2)
+\end{lstlisting} %$
\item studiate \lstinline|Regexp::Common|
\end{itemize}
\end{frame}
+\section{Eccezioni}
+
\begin{frame}[fragile]\frametitle{Eccezioni}
\begin{itemize}
\item lanciate eccezioni, non impostate flag o valori di ritorno
@@ -251,6 +290,8 @@ sub esegui_comando {
\end{itemize}
\end{frame}
+\section{OOP}
+
\begin{frame}[fragile]\frametitle{Oggetti}
\begin{itemize}
\item usate \lstinline|Moose|
@@ -261,6 +302,8 @@ sub esegui_comando {
\end{itemize}
\end{frame}
+\section{Moduli}
+
\begin{frame}[fragile]\frametitle{Moduli}
\begin{itemize}
\item non ripetete mai il codice: fattorizzate \emph{sempre}
@@ -271,6 +314,8 @@ sub esegui_comando {
\end{itemize}
\end{frame}
+\section{Varie}
+
\begin{frame}[fragile]\frametitle{Varie}
\begin{itemize}
\item scrivete test, e usateli