\documentclass[10pt,a4paper]{article} % Packages \usepackage{fancyhdr} % For header and footer \usepackage{multicol} % Allows multicols in tables \usepackage{tabularx} % Intelligent column widths \usepackage{tabulary} % Used in header and footer \usepackage{hhline} % Border under tables \usepackage{graphicx} % For images \usepackage{xcolor} % For hex colours %\usepackage[utf8x]{inputenc} % For unicode character support \usepackage[T1]{fontenc} % Without this we get weird character replacements \usepackage{colortbl} % For coloured tables \usepackage{setspace} % For line height \usepackage{lastpage} % Needed for total page number \usepackage{seqsplit} % Splits long words. %\usepackage{opensans} % Can't make this work so far. Shame. Would be lovely. \usepackage[normalem]{ulem} % For underlining links % Most of the following are not required for the majority % of cheat sheets but are needed for some symbol support. \usepackage{amsmath} % Symbols \usepackage{MnSymbol} % Symbols \usepackage{wasysym} % Symbols %\usepackage[english,german,french,spanish,italian]{babel} % Languages % Document Info \author{MNotoroid} \pdfinfo{ /Title (convenciones-de-codigo-java.pdf) /Creator (Cheatography) /Author (MNotoroid) /Subject (Convenciones de Código Java Cheat Sheet) } % Lengths and widths \addtolength{\textwidth}{6cm} \addtolength{\textheight}{-1cm} \addtolength{\hoffset}{-3cm} \addtolength{\voffset}{-2cm} \setlength{\tabcolsep}{0.2cm} % Space between columns \setlength{\headsep}{-12pt} % Reduce space between header and content \setlength{\headheight}{85pt} % If less, LaTeX automatically increases it \renewcommand{\footrulewidth}{0pt} % Remove footer line \renewcommand{\headrulewidth}{0pt} % Remove header line \renewcommand{\seqinsert}{\ifmmode\allowbreak\else\-\fi} % Hyphens in seqsplit % This two commands together give roughly % the right line height in the tables \renewcommand{\arraystretch}{1.3} \onehalfspacing % Commands \newcommand{\SetRowColor}[1]{\noalign{\gdef\RowColorName{#1}}\rowcolor{\RowColorName}} % Shortcut for row colour \newcommand{\mymulticolumn}[3]{\multicolumn{#1}{>{\columncolor{\RowColorName}}#2}{#3}} % For coloured multi-cols \newcolumntype{x}[1]{>{\raggedright}p{#1}} % New column types for ragged-right paragraph columns \newcommand{\tn}{\tabularnewline} % Required as custom column type in use % Font and Colours \definecolor{HeadBackground}{HTML}{333333} \definecolor{FootBackground}{HTML}{666666} \definecolor{TextColor}{HTML}{333333} \definecolor{DarkBackground}{HTML}{231FA3} \definecolor{LightBackground}{HTML}{F1F1F9} \renewcommand{\familydefault}{\sfdefault} \color{TextColor} % Header and Footer \pagestyle{fancy} \fancyhead{} % Set header to blank \fancyfoot{} % Set footer to blank \fancyhead[L]{ \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{C} \SetRowColor{DarkBackground} \vspace{-7pt} {\parbox{\dimexpr\textwidth-2\fboxsep\relax}{\noindent \hspace*{-6pt}\includegraphics[width=5.8cm]{/web/www.cheatography.com/public/images/cheatography_logo.pdf}} } \end{tabulary} \columnbreak \begin{tabulary}{11cm}{L} \vspace{-2pt}\large{\bf{\textcolor{DarkBackground}{\textrm{Convenciones de Código Java Cheat Sheet}}}} \\ \normalsize{by \textcolor{DarkBackground}{MNotoroid} via \textcolor{DarkBackground}{\uline{cheatography.com/23208/cs/5072/}}} \end{tabulary} \end{multicols}} \fancyfoot[L]{ \footnotesize \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{LL} \SetRowColor{FootBackground} \mymulticolumn{2}{p{5.377cm}}{\bf\textcolor{white}{Cheatographer}} \\ \vspace{-2pt}MNotoroid \\ \uline{cheatography.com/mnotoroid} \\ \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Cheat Sheet}} \\ \vspace{-2pt}Published 29th August, 2015.\\ Updated 12th May, 2016.\\ Page {\thepage} of \pageref{LastPage}. \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Sponsor}} \\ \SetRowColor{white} \vspace{-5pt} %\includegraphics[width=48px,height=48px]{dave.jpeg} Measure your website readability!\\ www.readability-score.com \end{tabulary} \end{multicols}} \begin{document} \raggedright \raggedcolumns % Set font size to small. Switch to any value % from this page to resize cheat sheet text: % www.emerson.emory.edu/services/latex/latex_169.html \footnotesize % Small font. \begin{multicols*}{3} \begin{tabularx}{5.377cm}{x{2.9862 cm} x{1.9908 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{Extensiones de los ficheros}} \tn % Row 0 \SetRowColor{LightBackground} Tipo de fichero & Extensión \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} Fuente Java & .java \tn % Row Count 2 (+ 1) % Row 2 \SetRowColor{LightBackground} Bytecode & .class \tn % Row Count 3 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{x{1.4931 cm} x{3.4839 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{Nombres de ficheros comúnes}} \tn % Row 0 \SetRowColor{LightBackground} Nombre de fichero & Uso \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} GNUmakefile & Usamos gnumake para construir nuestro software. \tn % Row Count 4 (+ 2) % Row 2 \SetRowColor{LightBackground} README & El nombre preferido para el fichero que resume los contenidos de un directorio particular. \tn % Row Count 8 (+ 4) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Ficheros fuente Java}} \tn \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{Cada fichero fuente Java contiene una única clase o interfaces pública. Cuando algunas clases o interfaces privadas están asociadas a una clase pública, pueden ponerse en el mismo fichero que la clase pública.% Row Count 5 (+ 5) } \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Comentarios de comienzo}} \tn \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{Todos los ficheros fuente deben comenzar con un comentario en el que se lista el nombre de la clase, información de la versión, fecha, y copyright: \newline % Row Count 3 (+ 3) /* \newline % Row Count 4 (+ 1) * Nombre de la clase \newline % Row Count 5 (+ 1) * \newline % Row Count 6 (+ 1) * Informacion de la version \newline % Row Count 7 (+ 1) * \newline % Row Count 8 (+ 1) * Fecha \newline % Row Count 9 (+ 1) * \newline % Row Count 10 (+ 1) * Copyright \newline % Row Count 11 (+ 1) */% Row Count 12 (+ 1) } \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{x{2.33919 cm} x{2.63781 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{Declaraciones}} \tn % Row 0 \SetRowColor{LightBackground} Inicialización & Intentar inicializar las variables locales donde se declaran. La única razón para no inicializar una variable donde se declara es si el valor inicial depende de algunos cálculos que deben ocurrir \tn % Row Count 10 (+ 10) % Row 1 \SetRowColor{white} Colocación & Poner las declaraciones solo al principio de los bloques (un bloque es cualquier código encerrado por llaves "\{" y "\}".) \tn % Row Count 16 (+ 6) % Row 2 \SetRowColor{LightBackground} Declaraciones de class e interfaces & Al codificar clases e interfaces de Java, se siguen las siguientes reglas de formato: · Ningún espacio en blanco entre el nombre de un método y el paréntesis "(" que abre su lista de parámetros · La llave de apertura "\{" aparece al final de la misma línea de la sentencia declaracion · La llave de cierre "\}" empieza una nueva línea indentada para ajustarse a su sentencia de apertura correspondiente \tn % Row Count 36 (+ 20) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{x{2.4885 cm} x{2.4885 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{Declaraciones de clases e interfaces}} \tn % Row 0 \SetRowColor{LightBackground} Partes de la declaración de una clase o interface & Los comentarios de documentación describen clases Java, interfaces, constructores, métodos y atributos. \tn % Row Count 6 (+ 6) % Row 1 \SetRowColor{white} Sentencia class o interface & En el encabezado se usa la palabra clave interface en lugar de class o abstract class. Por ejemplo public interface NombreDelInterface \{…\} \tn % Row Count 13 (+ 7) % Row 2 \SetRowColor{LightBackground} Comentario de implementación de la clase o interface si fuera necesario (/{\emph{...}}/) & Este comentario debe contener cualquier información aplicable a toda la clase o interface que no era apropiada para estar en los comentarios de documentación de la clase o interface. \tn % Row Count 23 (+ 10) % Row 3 \SetRowColor{white} Variables de clase (static) & Primero las variables de clase public, después las protected, después las de nivel de paquete (sin modificador de acceso) , y despúes las private. \tn % Row Count 31 (+ 8) \end{tabularx} \par\addvspace{1.3em} \vfill \columnbreak \begin{tabularx}{5.377cm}{x{2.4885 cm} x{2.4885 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{Declaraciones de clases e interfaces (cont)}} \tn % Row 4 \SetRowColor{LightBackground} Variables de instancia & Primero las public, después las protected, después las de nivel de paquete (sin modificador de acceso), y después las private. \tn % Row Count 7 (+ 7) % Row 5 \SetRowColor{white} Constructores & Cuando se construye un objeto es necesario inicializar sus variables con valores coherentes, imaginemos un objeto de la clase Persona cuyo atributo color de pelo al nacer sea verde, un estado incorrecto tras construir el objeto persona. \tn % Row Count 19 (+ 12) % Row 6 \SetRowColor{LightBackground} Métodos & Estos métodos se deben agrupar por funcionalidad más que por visión o accesibilidad. Por ejemplo, un método de clase privado puede estar entre dos métodos públicos de instancia. \tn % Row Count 29 (+ 10) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{x{2.43873 cm} x{2.53827 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{Sentencias}} \tn % Row 0 \SetRowColor{LightBackground} Sentencias simples & Cada línea debe contener como mucho una sentencia. Ejemplo: argv++; // Correcto argc-{}-; // Correcto argv++; argc-{}-; // EVITAR! \tn % Row Count 7 (+ 7) % Row 1 \SetRowColor{white} Sentencias compuestas & Las sentencias compuestas son sentencias que contienen listas de sentencias encerradas entre llaves "\{ sentencias \}". \tn % Row Count 13 (+ 6) % Row 2 \SetRowColor{LightBackground} Sentencias de retorno & Una sentencia return con un valor no debe usar paréntesis a menos que hagan el valor de retorno más obvio de alguna manera. Ejemplo: return; return miDiscoDuro.size(); return (tamanyo ? tamanyo : tamanyoPorDefecto); \tn % Row Count 24 (+ 11) % Row 3 \SetRowColor{white} Sentencias if, if-else, if else-if else & La clase de sentencias if-else debe tener la siguiente forma: if (condicion) \{ sentencias; \} if (condicion) \{ sentencias; \} else \{ sentencias; \} if (condicion) \{ sentencia; \} else if (condicion) \{ sentencia; \} else\{ sentencia; \} \tn % Row Count 36 (+ 12) \end{tabularx} \par\addvspace{1.3em} \vfill \columnbreak \begin{tabularx}{5.377cm}{x{2.43873 cm} x{2.53827 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{Sentencias (cont)}} \tn % Row 4 \SetRowColor{LightBackground} Sentencias for & Una sentencia for debe tener la siguiente forma: for (inicializacion; condicion; actualizacion) \{ sentencias; \} \tn % Row Count 6 (+ 6) % Row 5 \SetRowColor{white} Sentencias while & Una sentencia while debe tener la siguiente forma: while (condicion) \{ sentencias; \tn % Row Count 11 (+ 5) % Row 6 \SetRowColor{LightBackground} Sentencias do-while & Una sentencia do-while debe tener la siguiente forma: do \{ sentencias; \} while (condicion); \tn % Row Count 16 (+ 5) % Row 7 \SetRowColor{white} Sentencias switch & Una sentencia switch debe tener la siguiente forma: switch (condicion) \{ case ABC: sentencias; /{\emph{ este caso se propaga }}/ case DEF: sentencias; break; case XYZ: sentencias; break; default: sentencias; break; \} \tn % Row Count 27 (+ 11) % Row 8 \SetRowColor{LightBackground} Sentencias try-catch & Una sentencia try-catch debe tener la siguiente forma: try \{ sentencias; \} catch (ExceptionClass e) \{ sentencias; \} \tn % Row Count 33 (+ 6) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Indentación}} \tn \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{Longitud de la línea \newline % Row Count 1 (+ 1) Evitar las líneas de más de 80 caracteres, ya que no son manejadas bien por muchas \newline % Row Count 3 (+ 2) terminales y herramientas. \newline % Row Count 4 (+ 1) Rompiendo líneas \newline % Row Count 5 (+ 1) Cuando una expresión no entre en una línea, romperla de acuerdo con estos principios: \newline % Row Count 7 (+ 2) · Romper después de una coma. \newline % Row Count 8 (+ 1) · Romper antes de un operador. \newline % Row Count 9 (+ 1) · Preferir roturas de alto nivel (más a la derecha que el "padre") que de bajo nivel (más a la izquierda que el "padre"). \newline % Row Count 12 (+ 3) · Alinear la nueva linea con el comienzo de la expresión al mismo nivel de la linea anterior. \newline % Row Count 14 (+ 2) · Si las reglas anteriores llevan a código confuso o a código que se aglutina en el margen derecho, indentar justo 8 espacios en su lugar.% Row Count 17 (+ 3) } \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Comentarios}} \tn \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{Los programas Java pueden tener dos tipos de comentarios: comentarios de implementación y comentarios de documentación. Los comentarios de implementación son aquellos que también se encuentran en C++, delimitados por /{\emph{...}}/, y //. Los comentarios de documentación (conocidos como "doc comments") existen sólo en Java, y se limitan por /{\emph{*...}}/. Los comentarios de documentación se pueden exportar a ficheros HTML con la herramienta javadoc.% Row Count 9 (+ 9) } \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{x{2.09034 cm} x{2.88666 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{Formatos de los comentarios de implementación}} \tn % Row 0 \SetRowColor{LightBackground} Comentarios de bloque & Los comentarios de bloque se usan para dar descripciones de ficheros, métodos, estructuras de datos y algoritmos. \tn % Row Count 5 (+ 5) % Row 1 \SetRowColor{white} Comentarios de una linea & Pueden aparecer comentarios cortos de una única línea al nivel del código que siguen. Si un comentario no se puede escribir en una línea, debe seguir el formato de los comentarios de bloque. \tn % Row Count 14 (+ 9) % Row 2 \SetRowColor{LightBackground} Comentarios de remolque & Pueden aparecer comentarios muy pequeños en la misma línea que describen, pero deben ser movidos lo suficientemente lejos para separarlos de las sentencias. \tn % Row Count 21 (+ 7) % Row 3 \SetRowColor{white} Comentarios de fin de linea & El delimitador de comentario // puede convertir en comentario una línea completa o una parte de una linea. \tn % Row Count 26 (+ 5) % Row 4 \SetRowColor{LightBackground} Comentarios de documentación & Los comentarios de documentación describen clases Java, interfaces, constructores, métodos y atributos. \tn % Row Count 31 (+ 5) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{p{0.50347 cm} x{2.05965 cm} x{2.01388 cm} } \SetRowColor{DarkBackground} \mymulticolumn{3}{x{5.377cm}}{\bf\textcolor{white}{Convenciones de nombres}} \tn % Row 0 \SetRowColor{LightBackground} \seqsplit{Paquetes} & El prefijo del nombre de un paquete se escribe siempre con letras ASCII en minúsculas, y debe ser uno de los nombres de dominio de alto nivel, actualmente com, edu, gov, mil, net, org, o uno de los códigos ingleses de dos letras que identifícan cada país como se especifica en el ISO Standard 3166, 1981. & com.sun.eng \seqsplit{com.apple.quicktime.v2} edu.cmu.cs.bovik.cheese \tn % Row Count 18 (+ 18) % Row 1 \SetRowColor{white} \seqsplit{Clases} & Los nombres de las clases deben ser sustantivos, cuando son compuestos tendrán la primera letra de cada palabra que lo forma en mayúsculas. Intentar mantener los nombres de las clases simples y descriptivos. & class Cliente; class ImagenAnimada; \tn % Row Count 30 (+ 12) \end{tabularx} \par\addvspace{1.3em} \vfill \columnbreak \begin{tabularx}{5.377cm}{p{0.50347 cm} x{2.05965 cm} x{2.01388 cm} } \SetRowColor{DarkBackground} \mymulticolumn{3}{x{5.377cm}}{\bf\textcolor{white}{Convenciones de nombres (cont)}} \tn % Row 2 \SetRowColor{LightBackground} \seqsplit{Interfaces} & Los nombres de las interfaces siguen la misma regla que las clases. & interface \seqsplit{ObjetoPersistente;} interface Almacen; \tn % Row Count 4 (+ 4) % Row 3 \SetRowColor{white} \seqsplit{Métodos} & Los métodos deben ser verbos, cuando son compuestos tendrán la primera letra en minúscula, y la primera letra de las siguientes palabras que lo forma en mayúscula. & ejecutar(); \seqsplit{ejecutarRapido();} cogerFondo(); \tn % Row Count 14 (+ 10) % Row 4 \SetRowColor{LightBackground} \seqsplit{Variables} & Excepto las constantes, todas las instancias y variables de clase o método empezarán con minúscula. Las palabras internas que lo forman (si son compuestas) empiezan con su primera letra en mayúsculas. Los nombres de variables no deben empezar con los caracteres subguión "\_" o signo del dolar "\$", aunque ambos estan permitidos por el lenguaje. & int i; char c; float miAnchura; \tn % Row Count 34 (+ 20) \end{tabularx} \par\addvspace{1.3em} \vfill \columnbreak \begin{tabularx}{5.377cm}{p{0.50347 cm} x{2.05965 cm} x{2.01388 cm} } \SetRowColor{DarkBackground} \mymulticolumn{3}{x{5.377cm}}{\bf\textcolor{white}{Convenciones de nombres (cont)}} \tn % Row 5 \SetRowColor{LightBackground} \seqsplit{Constantes} & Los nombres de las variables declaradas como constantes deben ir totalmente en mayúsculas separando las palabras con un subguión ("\_"). & static final int ANCHURA\_MINIMA = 4; static final int ANCHURA\_MAXIMA = 999; static final int COGER\_LA\_CPU = 1; \tn % Row Count 8 (+ 8) \hhline{>{\arrayrulecolor{DarkBackground}}---} \end{tabularx} \par\addvspace{1.3em} % That's all folks \end{multicols*} \end{document}