programming-guidelines.xml
author "German Poo-Caaman~o <gpoo@ubiobio.cl>"
Fri, 08 Sep 2006 11:24:34 -0400
changeset 2 a11aa511a545
parent 1 52d161ada41e
child 4 254f5b1f49db
permissions -rw-r--r--
2006-09-08 German Poo-Caaman~o <gpoo@ubiobio.cl> * ChangeLog: Added itself.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
     1
<?xml version="1.0" encoding="ISO-8859-1"?>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
     2
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
     3
    "/usr/share/sgml/docbook/dtd/xml/4.1.2/docbookx.dtd" [
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
     4
<!ENTITY Emacs "<application>Emacs</application>">
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
     5
<!ENTITY Vim "<application>Vim</application>">
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
     6
<!ENTITY ChangeLog "<filename>ChangeLog</filename>">
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
     7
]>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
     8
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
     9
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    10
<article class="techreport" id="index" lang="es">
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    11
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    12
  <articleinfo>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    13
    <title>Guía de programación de GNOME</title>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    14
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    15
    <authorgroup>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    16
      <author>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    17
	<firstname>Federico</firstname>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    18
	<surname>Mena Quintero</surname>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    19
	<affiliation>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    20
	  <address>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    21
	    <email>federico@gnu.org</email>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    22
	  </address>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    23
	</affiliation>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    24
      </author>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    25
      <author>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    26
	<firstname>Miguel</firstname>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    27
	<surname>de Icaza</surname>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    28
	<affiliation>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    29
	  <address>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    30
	    <email>miguel@kernel.org</email>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    31
	  </address>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    32
	</affiliation>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    33
      </author>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    34
      <author>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    35
	<firstname>Morten</firstname>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    36
	<surname>Welinder</surname>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    37
	<affiliation>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    38
	  <address>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    39
	    <email>terra@diku.dk</email>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    40
	  </address>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    41
	</affiliation>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    42
      </author>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    43
      <othercredit>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    44
	<firstname>Germ&aacute;n</firstname>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    45
	<surname>Po&oacute; Caama&ntilde;o</surname>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    46
	<contrib>Traducción al español</contrib>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    47
	<affiliation>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    48
	  <address>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    49
	    <email>gpoo@ubiobio.cl</email>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    50
	  </address>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    51
	</affiliation>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    52
      </othercredit>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
    53
      <othercredit>
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
    54
	<firstname>Lucas</firstname>
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
    55
	<surname>Vieites Fari&ntilde;a</surname>
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
    56
	<contrib>Revisión de la traducción al español</contrib>
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
    57
	<affiliation>
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
    58
	  <address>
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
    59
	    <email>lucas@asixinformatica.com</email>
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
    60
	  </address>
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
    61
	</affiliation>
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
    62
      </othercredit>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    63
    </authorgroup>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    64
    <copyright>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    65
      <year>2000</year>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    66
      <holder>The Free Software Foundation</holder>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    67
    </copyright>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    68
    <copyright>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
    69
      <year>2004&mdash;2006</year>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    70
      <holder>GNOME Foundation, respecto de la versión en español.</holder>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    71
    </copyright>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    72
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    73
    <abstract>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    74
      <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    75
	Este artículo contiene varías guías y sugerencias para los
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    76
	programadores de GNOME, así como ciertas políticas que
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    77
	deberían seguirse cuando se escriben programas para GNOME.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    78
	Es un intento para que los programadores puedan aprender
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    79
	acerca del proceso de desarrollo de GNOME y su filosofía.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    80
	GNOME es un esfuerzo de equipo, así que será útil para 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    81
	que los programadores sepan «la forma de hacer la
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    82
	cosas».
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    83
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    84
    </abstract>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    85
  </articleinfo>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    86
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    87
  <!-- Introduction -->
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    88
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    89
  <sect1 id="intro">
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    90
    <title>Introducción</title>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    91
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    92
    <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    93
	  GTK+, la biblioteca de interfaz de usuario básica de GNOME, nos
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    94
	  ha enseñado algunas lecciones importantes en el diseño de software.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    95
	  El código de GTK+ es limpio, consistente, mantenible y tiene
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    96
	  sentido.  Tal código no sólo provoca placer al trabajar con el,
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    97
	  sino que además es un incentivo para las buenas prácticas de 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    98
	  programación para aquellos que quieran extenderlo y modificarlo.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
    99
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   100
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   101
    <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   102
	  En este artículo intentamos presentar algunas sugerencias y 
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   103
	  lineamientos que deberías tener en cuenta cuando escribas código
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   104
	  para el proyecto GNOME.  Presentamos algunas de las políticas
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   105
	  que deben seguirse cuando se modifica el código de otras
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   106
	  personas, usando el repositorio CVS y asegurándose de que el
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   107
	  código se ajusta para ser incluído en GNOME. También 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   108
	  presentamos información que será útil para los mantenedores
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   109
	  de paquetes.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   110
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   111
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   112
    <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   113
	  Además de este documento, asegúrate de leer los Estándares de 
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   114
	  Programación de GNU.  Estos se encuentran disponibles en el
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   115
	  nodo info <filename>(Standards)</filename> en la documentación
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   116
	  estándar de GNU.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   117
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   118
  </sect1>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   119
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   120
  <!-- The Importance of Writing Good Code -->
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   121
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   122
  <sect1 id="good-code">
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   123
    <title>La importancia de escribir buen código</title>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   124
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   125
    <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   126
	  GNOME es un proyecto de software libre muy ambicioso y, como tal,
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   127
	  está compuesto por muchos paquetes de software que son más o menos
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   128
	  independientes el uno del otro.  Mucho del trabajo en GNOME lo 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   129
	  realizan voluntarios; programadores que vienen y se van
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   130
	  en cualquier momento y que serán capaces de dedicar
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   131
	  diferentes cantidades de tiempo al proyecto GNOME.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   132
	  Muchas personas trabajan en software libre en su tiempo libre o
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   133
	  como un pasatiempo, así, si sus responsabilidades del &lsquo;mundo
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   134
	  real&rsquo; cambian, se verá reflejado en la cantidad de trabajo que
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   135
	  dedicarán a proyectos de software libre.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   136
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   137
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   138
    <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   139
	  Se tarda mucho tiempo en escribir software y supone una
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   140
	  gran cantidad de trabajo. Es por esto que muchos
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   141
	  de los voluntarios de tiempo parcial no pueden comenzar 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   142
	  grandes proyectos por sí mismos; es mucho más fácil y
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   143
	  gratificante contribuir a proyectos existentes, puesto que
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   144
	  los resultados son inmediatamente visibles y usables.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   145
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   146
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   147
    <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   148
	  Teniendo esto en cuenta y el hecho que los programadores de
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   149
	  software libre tiene recursos escasos, concluimos que
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   150
	  para los proyectos existentes es muy importante facilitar,
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   151
	  tanto como sea posible, que otras personas puedan contribuir.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   152
	  Una forma de hacerlo es asegurándose de que los programas
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   153
	  sean fáciles de leer, entender y modificar.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   154
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   155
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   156
    <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   157
	  El código desordenado es difícil de leer y las personas pueden
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   158
	  perder interés si no son capaces de descifrar lo que el código
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   159
	  intenta hacer.  Además, es importante que los programadores sean
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   160
	  capaces de entender el código rápidamente, y así poder comenzar
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   161
	  a contribuir reparando fallos y extendiéndolo en un período breve
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   162
	  de tiempo.  El código fuente es una forma de comunicación, y así
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   163
	  como a alguien podría no querer leer una novela con errores
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   164
	  ortográficos y mala puntuación, los programadores deben intentar
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   165
	  escribir buen código de tal forma que sea fácil de entender y
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   166
	  modificar por otros.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   167
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   168
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   169
    <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   170
	  Existen algunas cualidades que son importantes en un buen 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   171
	  código y por qué son importantes para los desarrolladores
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   172
	  de software libre:
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   173
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   174
      <variablelist>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   175
	<varlistentry>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   176
	  <term>Limpieza</term>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   177
	  <listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   178
	    <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   179
		  Un código limpio es fácil de leer; permite a las
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   180
		  personas leerlo con un mínimo esfuerzo y así pueden
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   181
		  entenderlo más fácilmente.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   182
	    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   183
	  </listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   184
	</varlistentry>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   185
	<varlistentry>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   186
	  <term>Consistencia</term>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   187
	  <listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   188
	    <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   189
		  El código consistente permite más fácilmente que las
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   190
		  personas entiendan como funciona el programa; cuando se
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   191
		  lee código consistente, subconcientemente uno se forma
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   192
		  un número de supuestos y expectativas acerca del 
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   193
		  funcionamiento del código, de esta forma es más fácil
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   194
		  y seguro realizarle modificaciones.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   195
	    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   196
	  </listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   197
	</varlistentry>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   198
	<varlistentry>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   199
	  <term>Extensibilidad</term>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   200
	  <listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   201
	    <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   202
		  El código de propósito general es más fácil de reutilizar
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   203
		  y modificar que el código demasiado específico con muchos
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   204
		  supuestos escritos directamente en el código (hardcoded).
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   205
		  Cuando alguien desea agregar una nueva característica
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   206
		  a un programa, obviamente será más fácil hacerlo si el
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   207
		  código fue diseñado para ser extensible desde el inicio.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   208
		  El código que no fue escrito de esta forma hará que las
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   209
		  personas deban implementar hacks muy feos para poder
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   210
		  añadir características.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   211
	    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   212
	  </listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   213
	</varlistentry>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   214
	<varlistentry>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   215
	  <term>Corrección</term>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   216
	  <listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   217
	    <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   218
		  Finalmente, el código diseñado debe ser correcto para
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   219
		  que las personas pierdan menos tiempo preocupándose de
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   220
		  los errores y se ocupen  en extender las
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   221
		  características de un programa.  Los usuarios también
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   222
		  apreciarán un código correcto, ya que a nadie le gusta
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   223
		  que un programa se caiga.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   224
	    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   225
	  </listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   226
	</varlistentry>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   227
      </variablelist>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   228
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   229
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   230
    <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   231
	  En resumen, los programadores a menudo contribuyen en
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   232
	  su tiempo libre a proyectos de software libre, y aún quienes
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   233
	  contribuyen de forma regular pueden detenerse en cualquier
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   234
	  instante del tiempo, así que es muy importante que el código
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   235
	  sea bueno y les permita modificarlo facilmente.  El resultado
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   236
	  final será un mejor software al que los programadores 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   237
	  querrán extender.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   238
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   239
  </sect1>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   240
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   241
  <!-- Coding Style -->
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   242
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   243
  <sect1 id="code-style">
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   244
    <title>Estilo de programación</title>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   245
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   246
    <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   247
      &lsquo;El estilo de programación&rsquo; se refiere a la forma en 
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   248
	  que se da formato al código fuente.  Para C, esto involucra
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   249
	  la forma en que se ubican las llaves, se indenta el código y
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   250
	  se utilizan los paréntesis.  GNOME tiene una mezcla de estilos
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   251
	  de programación y no se obliga el uso de ninguno de ellos.  Lo más
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   252
	  importante es que el código sea consistente dentro de un programa
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   253
	  o una biblioteca &mdash; el código con un formato desordenado
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   254
	  no es aceptable debido a que es difícil de leer.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   255
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   256
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   257
    <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   258
	  Cuando escribas un nuevo programa o biblioteca, sigue un
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   259
	  estilo consistente de ubicación de llaves y de indentación.
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   260
	  Si no tienes ninguna preferencia personal de estilo, 
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   261
	  recomendamos el estilo de programación del núcleo de Linux o
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   262
	  el estilo de programación de GNU.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   263
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   264
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   265
    <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   266
	  Lee el nodo de info <filename>(Standards)Writing C</filename> 
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   267
	  en la documentación de GNU. Luego, obtén el código fuente
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   268
	  de Linux y lee el archivo 
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   269
	  <filename>linux/Documentation/CodingStyle</filename>, e
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   270
	  ignora los chistes de Linus.  Estos dos documentos te darán
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   271
	  una buena idea de nuestras recomendaciones para el código de
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   272
	  GNOME.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   273
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   274
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   275
    <!-- Indentation Style -->
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   276
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   277
    <sect2 id="indent">
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   278
      <title>Estilo de indentación</title>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   279
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   280
      <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   281
		Para el código del núcleo de GNOME preferimos el estilo
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   282
		de indentación del núcleo de Linux.  Usa tabuladores
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   283
		de 8 espacios para la indentación.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   284
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   285
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   286
      <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   287
		Usar tabuladores de 8 espacios para indentación proporciona
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   288
		un número de beneficios.  Permite que el código sea más
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   289
		fácil de leer, ya que la indentación se marca claramente.
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   290
		También ayuda a mantener el código ordenado
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   291
		forzando a dividir funciones en trozos más modulares y
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   292
		bien definidos &mdash; si la indentación va más allá del
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   293
		margen derecho, significa que la función está mal
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   294
		diseñada y que debiera dividirse para hacerla más modular
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   295
		o bien, repensarla.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   296
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   297
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   298
      <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   299
		Los tabuladores de 8 espacios para indentación también
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   300
		ayudan al diseño de funciones que encajen bien en la pantalla, 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   301
		lo cual significa que las personas puedan entender el código
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   302
		sin tener que desplazarse atrás y adelante para entenderlo.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   303
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   304
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   305
      <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   306
		Si usas &Emacs;, entonces puedes seleccionar el estilo de
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   307
		indentación del núcleo de Linux incluyendo en el 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   308
		archivo <filename>.emacs</filename> lo siguiente:
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   309
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   310
	<programlisting>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   311
(add-hook 'c-mode-common-hook
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   312
          (lambda ()
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   313
            (c-set-style "k&amp;r")
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   314
            (setq c-basic-offset 8)))</programlisting>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   315
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   316
	En los nuevos Emacs o con el nuevo cc-mode, puedes ser capaz
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   317
	de hacerlo más simple con:
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   318
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   319
	<programlisting>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   320
(add-hook 'c-mode-common-hook
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   321
          (lambda ()
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   322
            (c-set-style "linux")))</programlisting>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   323
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   324
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   325
      <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   326
		El estilo de indentación de GNU es el predeterminado para
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   327
		&Emacs;, así que no es necesario agregar nada en el 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   328
		archivo <filename>.emacs</filename> para habilitarlo.
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   329
		Si deseas seleccionarlo explícitamente, sustituye
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   330
		«gnu» por «linux» en el ejemplo anterior.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   331
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   332
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   333
      <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   334
		Si usas &Vim;, entonces puedes seleccionar el estilo
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   335
		de indentación del núcleo de Linux incluyendo el 
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   336
		siguiente fragmento en el archivo 
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   337
		<filename>.vimrc</filename>:
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   338
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   339
	<programlisting>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   340
set ts=8
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   341
if !exists("autocommands_loaded")
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   342
  let autocommands_loaded = 1
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   343
  augroup C
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   344
      autocmd BufRead *.c set cindent
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   345
  augroup END
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   346
endif</programlisting>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   347
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   348
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   349
      <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   350
		Como alternativa puedes seleccionar el estilo de 
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   351
		indentación de GNU en &Vim; usando lo siguiente en
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   352
		el archivo <filename>.vimrc</filename>:
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   353
	<footnote>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   354
	  <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   355
	    Gracias a Tomas &Ouml;gren por proporcionar este código.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   356
	  </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   357
	</footnote>:
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   358
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   359
	<programlisting>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   360
augroup C
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   361
   autocmd BufRead *.c set cinoptions={.5s,:.5s,+.5s,t0,g0,^-2,e-2,n-2,p2s,(0,=.5s formatoptions=croql cindent shiftwidth=4 tabstop=8
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   362
augroup END</programlisting>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   363
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   364
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   365
      <note>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   366
	<para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   367
	  Si sabe personalizar el estilo de indentación en otros
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   368
	  editores populares, por favor háganoslo saber y así podemos
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   369
	  expandir este documento.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   370
	</para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   371
      </note>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   372
    </sect2>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   373
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   374
    <!-- Naming Conventions -->
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   375
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   376
    <sect2 id="naming">
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   377
      <title>Convenciones de nombres</title>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   378
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   379
      <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   380
		Es importante seguir una buena convención de nombres para
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   381
		los símbolos de los programas.   Es específicamente 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   382
		importante para las bibliotecas, ya que no debería
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   383
		ensuciarse el espacio de nombres global &mdash; es muy
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   384
		molesto cuando una biblioteca tiene símbolos nombrados
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   385
		desordenadamente que chocan con nombres que pueda
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   386
		querer usar en sus programas.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   387
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   388
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   389
      <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   390
		Los nombres de las funciones deberían ser de la forma
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   391
		<function>modulo_submodulo_operacion</function>, por ejemplo,
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   392
		<function>gnome_canvas_set_scroll_region</function> o
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   393
		<function>gnome_mime_get_keys</function>.  Esta convención
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   394
		elimina las colisiones de nombres de símbolos entre módulos.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   395
		Es muy importante para las bibliotecas.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   396
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   397
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   398
      <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   399
		Los símbolos deben tener nombres descriptivos.  Como Linus
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   400
		dice, no use <function>cntusr()</function>, sino que use
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   401
		<function>count_active_users()</function>.  Esto permite
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   402
		que el código sea más fácil de leer y casi se auto
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   403
		documenta.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   404
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   405
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   406
      <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   407
		Intente usar las mismas convenciones de nombre que tienen
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   408
		GTK+ y las bibliotecas de GNOME:
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   409
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   410
	<itemizedlist>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   411
	  <listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   412
	    <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   413
		  Los nombres de las funciones en minúsculas, con líneas
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   414
		  de subrayado para separar palabras, tal como:
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   415
	      <function>gnome_canvas_set_scroll_region()</function>,
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   416
	      <function>gnome_mime_get_keys()</function>.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   417
	    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   418
	  </listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   419
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   420
	  <listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   421
	    <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   422
		  Las macros y las enumeraciones en mayúsculas, con líneas
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   423
		  de subrayado para separar palabras, tal como:
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   424
	      <symbol>GNOMEUIINFO_SUBTREE()</symbol> para una macro y
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   425
	      <symbol>GNOME_INTERACT_NONE</symbol> para un valor 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   426
		  enumerado.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   427
	    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   428
	  </listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   429
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   430
	  <listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   431
	    <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   432
		  Los nombres de tipos y estructuras usan una mezcla de
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   433
		  mayúsculas y minúsculas, tal como:
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   434
	      <symbol>GnomeCanvasItem</symbol>,
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   435
		  <symbol>GnomeIconList</symbol>.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   436
	    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   437
	  </listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   438
	</itemizedlist>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   439
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   440
	Al utilizar líneas de subrayado para separar palabras el
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   441
	código estará menos apretado y facilita la edición, ya
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   442
	que puede usar las secuencias de teclas que permiten
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   443
	navegar entre palabras más rápidamente en cualquier editor.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   444
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   445
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   446
      <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   447
		Si estás escribiendo una biblioteca, entonces puedes necesitar
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   448
		exportar símbolos que serán usados sólo dentro de la
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   449
		biblioteca.   Por ejemplo, dos de los archivos objeto que
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   450
		componen la biblioteca <filename>libfoo.so</filename> pueden
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   451
		requerir acceder a símbolos ubicados en el otro archivo,
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   452
		pero se tiene la intención que éstos símbolos sean 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   453
		utilizados desde los programas de usuario.  En este caso,
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   454
		coloca una línea de subrayado antes del nombre de la
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   455
		función y haz que la primera palabra siga la convención
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   456
		estándar módulo/submódulo.  Por ejemplo, podrías tener
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   457
		una función llamada
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   458
	<function>_foo_internal_frobnicate()</function>.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   459
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   460
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   461
      <!-- Consistency in Naming -->
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   462
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   463
      <sect3 id="consist">
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   464
	<title>Consistencia entre nombres</title>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   465
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   466
	<para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   467
	  Es importante que las variables se nombren de manera 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   468
	  consistente.  Por ejemplo, un módulo que manipula una
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   469
	  lista puedes elegir nombrar las variables que mantienen
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   470
	  un puntero a la lista como «<symbol>l</symbol>», 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   471
	  por elegancia y simplicidad.  Sin embargo, es importante que
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   472
	  un módulo que manipula widgets y tamaños no use variables
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   473
	  llamadas «<symbol>w</symbol>» tanto para
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   474
	  widgets y anchos («width») (como en valores de ancho/alto);
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   475
	  esto podría hacer que el código sea inconsistente
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   476
	  y difícil de leer.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   477
	</para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   478
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   479
	<para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   480
	  Por supuesto, nombre muy cortos y elegantes solamente deberían
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   481
	  ser usados para variables locales de funciones.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   482
	  Nunca llame una variable global «<symbol>x</symbol>»; use 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   483
	  un nombre más largo que indique lo que significa.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   484
	</para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   485
      </sect3>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   486
    </sect2>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   487
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   488
    <!-- Cleanliness -->
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   489
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   490
    <sect2 id="clean">
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   491
      <title>Limpieza</title>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   492
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   493
      <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   494
		El código de GNOME debe ser tan limpio como sea posible.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   495
		Esto implica usar un estilo de indentación consistente
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   496
		y una buena convención para nombrar símbolos, como se
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   497
		ha indicado anteriormente.  Esto también implica lo
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   498
		siguiente.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   499
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   500
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   501
      <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   502
		Aprender el uso correcto de la palabra reservada
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   503
		<symbol>static</symbol>.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   504
		<emphasis>No</emphasis> declarar todos los símbolos como
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   505
		globales.  Esto tiene la ventaja de poder usar nombres
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   506
		más cortos dentro de las funciones en un sólo archivo
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   507
		fuente, ya que no son globalmente visibles y por
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   508
		consiguiente no necesitas emplear el prefijo 
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   509
		módulo/submódulo.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   510
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   511
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   512
      <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   513
		Aprender el uso correcto de la palabra reservada
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   514
		<symbol>const</symbol>.  Úsala consistentemente,
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   515
		así permitirás al compilador que atrape muchos
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   516
		errores estúpidos.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   517
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   518
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   519
      <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   520
		Si tienes una función que retorna un puntero a
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   521
		un dato interno que se supone que el usuario
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   522
		no debe liberar, deberías usar el modificador
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   523
		<symbol>const</symbol>.  Este avisará al usuario si intenta 
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   524
		hacer alguna operación incorrecta, por ejemplo:
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   525
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   526
	<programlisting>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   527
const char *gnome_mime_get_info (const char *info);</programlisting>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   528
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   529
		El compilador avisará si el usuario intenta liberar
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   530
		la cadena retornada.  Esto puede atrapar muchos
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   531
		errores.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   532
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   533
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   534
      <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   535
		Si tienes «valores mágicos» en el programa o
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   536
		biblioteca, usa macros que los definan en vez de usarlos
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   537
		directamente en el código:
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   538
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   539
	<programlisting>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   540
/* Amount of padding for GUI elements */
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   541
#define GNOME_PAD          8
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   542
#define GNOME_PAD_SMALL    4
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   543
#define GNOME_PAD_BIG      12</programlisting>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   544
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   545
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   546
      <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   547
		Si tienes una lista de valores posibles para una variable,
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   548
		no uses macros para ellas, usa enum para darle 
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   549
		un nombre de tipo &mdash; esto permite disponer de nombres
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   550
		simbólicos en un depurador.  Además, no uses 
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   551
		«int» para almacenar un valor enumerado; usa
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   552
		el tipo enum.  Esto le permite al compilador atrapar
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   553
		los errores por tí, permitiéndole al depurador mostrar los
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   554
		valores apropiados y hacer obvios los valores que una 
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   555
		variable puede tomar. A continuación un ejemplo:
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   556
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   557
	<programlisting>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   558
/* Shadow types */
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   559
typedef enum {
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   560
	GTK_SHADOW_NONE,
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   561
	GTK_SHADOW_IN,
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   562
	GTK_SHADOW_OUT,
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   563
	GTK_SHADOW_ETCHED_IN,
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   564
	GTK_SHADOW_ETCHED_OUT
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   565
} GtkShadowType;
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   566
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   567
void gtk_frame_set_shadow_type (GtkFrame *frame, GtkShadowType type);</programlisting>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   568
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   569
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   570
      <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   571
	Si define un conjunto de valores para un campo de bits, haz
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   572
	lo siguiente:
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   573
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   574
	<programlisting>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   575
<![CDATA[
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   576
/* Update flags for items */
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   577
enum {
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   578
	GNOME_CANVAS_UPDATE_REQUESTED  = 1 << 0,
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   579
	GNOME_CANVAS_UPDATE_AFFINE     = 1 << 1,
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   580
	GNOME_CANVAS_UPDATE_CLIP       = 1 << 2,
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   581
	GNOME_CANVAS_UPDATE_VISIBILITY = 1 << 3,
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   582
	GNOME_CANVAS_UPDATE_IS_VISIBLE = 1 << 4
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   583
};]]></programlisting>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   584
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   585
	Esto hace más fácil modificar la lista de valores y menos 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   586
	propenso a error que especificando los valores a mano.  También
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   587
	permite usar estos valores como símbolos en un depurador.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   588
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   589
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   590
      <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   591
		No escribas código ofuscado, intenta que sea espartano. 
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   592
		Para clarificar una expresión, no uses más paréntesis que 
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   593
		los necesarios.  Usa espacios antes de los paréntesis y
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   594
		después de las comas y también alrededor de los operadores
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   595
		binarios.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   596
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   597
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   598
      <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   599
		No escribas hacks en el código.  En vez de escribir un 
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   600
		hack feo, reescribe el código para que quede limpio,
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   601
		extensible y mantenible.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   602
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   603
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   604
      <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   605
		Asegúrate de que el código compila absolutamente sin ningún
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   606
		aviso del compilador.  Esto te ayudará a atrapar errores
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   607
		estúpidos.  Usa los prototipos de las funciones en los
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   608
		archivos de encabezados de forma consistente.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   609
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   610
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   611
      <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   612
		Dentro de GNOME puedes usar la macro de Autoconf 
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   613
        <symbol>GNOME_COMPILE_WARNINGS</symbol> en el archivo
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   614
        <filename>configure.in</filename>.  Esto permitirá contar
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   615
		con un buen conjunto de avisos del compilador de una manera
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   616
		portable.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   617
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   618
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   619
      <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   620
		Comenta el código.  Coloca comentarios antes de
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   621
		cada función para decir que hace.  No digas cómo lo hace
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   622
		a menos que sea absolutamente necesario; debería ser 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   623
		obvio al leer el código.  Si no lo fuera, entonces
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   624
		puedes desear reescribirla hasta que sea fácil de 
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   625
		entender.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   626
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   627
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   628
      <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   629
		Cuando documentes las funciones de la API de una biblioteca,
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   630
		sigue las directrices indicadas en el archivo
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   631
        <filename>gnome-libs/devel-docs/api-comment-style.txt</filename>.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   632
		Esto permite que el código fuente pueda proporcionar documentación
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   633
		en línea, que posteriormente se extrae mediante el sistema
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   634
        <application>gtk-doc</application> para crear un manual DocBook
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   635
	  	de forma automática.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   636
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   637
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   638
      <!-- Portability considerations -->
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   639
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   640
      <sect3 id="portability">
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   641
	<title>Consideraciones de portabilidad</title>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   642
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   643
	<para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   644
	  Se construye GNOME en muchas plataformas diferentes.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   645
	  Se puede asumir que serán plataformas más o menos tipo Unix;
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   646
	  hasta el momento GNOME no ha sido portado a sistema no-Unix,
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   647
	  así que se puede asumir que los servicios estándares de 
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   648
	  Unix estarán disponibles.<footnote>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   649
	    <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   650
		  ¿Servicios estándar de Unix? Por supuesto que estamos
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   651
		  bromeando.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   652
	    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   653
	  </footnote>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   654
	</para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   655
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   656
	<para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   657
	  Recuerda que el mundo no es tu propio equipo con GNU/Linux;
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   658
	  las gente realmente usa otros tipos de máquinas.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   659
	</para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   660
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   661
	<para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   662
	  Intenta no usar extensiones específicas de
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   663
	  <application>GCC</application> debido a que éstas no 
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   664
	  funcionarán con otros compiladores.  Si realmente debes
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   665
	  hacer uso de tal cosa, ve la forma en que se hace
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   666
	  en <application>Glib</application> con el conjunto de
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   667
	  macros G_GNUC; asegúrate también de incluir código
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   668
	  que funcione con compiladores ISO C. Si sólo tienes
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   669
	  disponible <application>GCC</application>, aprende a usar
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   670
	  las opciones <option>-ansi -pedantic</option> que
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   671
	  permiten probar código sospechoso.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   672
	</para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   673
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   674
	<para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   675
	  Recuerda que algunas plataformas no disponen de
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   676
	  <application>GCC</application> o que
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   677
	  <application>GDB</application> puede ser inusable en ellos,
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   678
	  y se querrán usar otros compiladores y depuradores.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   679
	</para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   680
      </sect3>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   681
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   682
      <!-- GTK+-related Issues -->
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   683
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   684
      <sect3 id="gtk">
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   685
	<title>Tópicos relacionados con GTK+</title>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   686
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   687
	<para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   688
	  GTK+ permite hacer mucha magia y ofuscación con manejadores
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   689
	  de señal, pasar cerraduras y conjuntos de datos.  Si te
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   690
	  encuentras utilizando muchos 
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   691
	  <function>gtk_object_set_data()</function> en un mismo lugar,
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   692
	  o estas pasando estados de forma extraña a través de manejadores
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   693
	  de señales, reescribe el código.  Si necesitas adjuntar muchos
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   694
	  datos a un objeto en particular, entonces es un buen candidato
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   695
	  para una nueva clase derivada, que no sólo hará al código
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   696
	  más limpio, sino que también lo hará más extensible.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   697
	</para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   698
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   699
	<para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   700
      Mucha de la heurística en manejadores de eventos complicadas
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   701
	  a menudo se pueden reemplazar limpiando el código a través
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   702
	  de una máquina de estados.  Esto es útil cuando se quieren
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   703
	  implementar cosas truculentas como selección y comportamientos
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   704
	  de arrastrado, y hará al código más fácil de depurar y extender.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   705
	</para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   706
      </sect3>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   707
    </sect2>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   708
  </sect1>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   709
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   710
  <!-- Correctness and Robustness -->
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   711
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   712
  <sect1 id="robust">
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   713
    <title>Corrección y robustez</title>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   714
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   715
    <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   716
	  Es extremadamente importante que el código de GNOME sea
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   717
	  correcto y robusto.  Esto significa que el código debería hacer
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   718
	  lo que se espera que haga y debería manejar bien las condiciones
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   719
	  de excepción.  Aunque esto pueda parecer obvio, esta sección
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   720
	  dará algunas ideas para asegurar la corrección de tu código
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   721
	  de GNOME.  Esto es muy importante, ya que los usuarios esperan
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   722
	  y merecen un software confiable que se ejecute correctamente
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   723
	  y que no se caiga.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   724
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   725
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   726
    <!-- Ensuring Consistency -->
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   727
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   728
    <sect2 id="ensure">
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   729
      <title>Cómo asegurar la consistencia</title>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   730
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   731
      <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   732
	  	<!-- FIXME: Buscar un mejor termino para "assertion" -->
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   733
		Utiliza las macros de aserción de Glib para asegurarte
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   734
		que el estado de un programa es consistente.  Estas macros
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   735
		ayudan a localizar errores muy rápidamente y se gastará 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   736
		mucho menos tiempo en el depurado si se emplean de forma
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   737
		generosa y consistente.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   738
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   739
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   740
      <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   741
		Inserta verificaciones de sanidad en el código en puntos
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   742
		importantes como es el inicio de funciones públicas, al
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   743
		final de código que realiza una búsqueda que siempre
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   744
		debe ser exitosa y en cualquier lugar donde
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   745
		el rango de valores calculados es importante.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   746
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   747
    </sect2>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   748
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   749
    <!-- Assertions and Preconditions -->
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   750
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   751
    <sect2 id="assert">
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   752
      <title>Aserciones y precondiciones</title>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   753
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   754
      <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   755
		Las aserciones y precondiciones ayudan a asegurar que
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   756
		el estado de un programa es consistente.  Glib proporciona
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   757
		macros para colocar aserciones y precondiciones en el
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   758
		código.  Deberías usarlas libremente; a cambio podrás
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   759
		localizar errores muy rápidamente y ocuparás menos tiempo
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   760
		rastreando errores con el depurador.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   761
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   762
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   763
      <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   764
		Existen macros de Glib para precondiciones, las cuales
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   765
		emiten un mensaje cuando una condición falla y retornan
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   766
		de la función desde donde fueron llamadas.  Debieran ser
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   767
		usadas en el inicio de las funciones.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   768
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   769
	<variablelist>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   770
	  <varlistentry>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   771
	    <term><function>g_return_if_fail
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   772
		(condición)</function></term>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   773
	    <listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   774
	      <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   775
			Retorna desde la línea actual de la función si la
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   776
		<symbol>condición</symbol> es falsa.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   777
	      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   778
	    </listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   779
	  </varlistentry>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   780
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   781
	  <varlistentry>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   782
	    <term><function>g_return_val_if_fail (condición,
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   783
		valor)</function></term>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   784
	    <listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   785
	      <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   786
			Retorna el <symbol>valor</symbol> indicado desde
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   787
			la función actual si la <symbol>condición</symbol>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   788
			es falsa.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   789
	      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   790
	    </listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   791
	  </varlistentry>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   792
	</variablelist>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   793
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   794
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   795
      <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   796
		También existen macros para aserciones.  Estas emitirán
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   797
		un mensaje cuando una condición falle y llamará a la
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   798
		función <function>abort(3)</function> para terminar el
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   799
		programa.  Debieran ser usadas para asegurarse la
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   800
		consistencia para códigos internos.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   801
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   802
	<variablelist>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   803
	  <varlistentry>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   804
	    <term><function>g_assert (condición)</function></term>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   805
	    <listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   806
	      <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   807
			Aborta el programa si la <symbol>condición</symbol>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   808
			es falsa.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   809
	      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   810
	    </listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   811
	  </varlistentry>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   812
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   813
	  <varlistentry>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   814
	    <term><function>g_assert_not_reached ()</function></term>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   815
	    <listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   816
	      <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   817
			Aborta el programa si se llama a la macro.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   818
	      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   819
	    </listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   820
	  </varlistentry>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   821
	</variablelist>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   822
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   823
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   824
      <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   825
		Estas funciones debieran emplearse para imponer 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   826
		precondiciones en el código y verificar su corrección
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   827
		&mdash; piensa en ellas como verificaciones de sanidad
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   828
		en los programas.  Debieras usarlas libremente como
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   829
		asistencia para atrapar los errores rápidamente; una
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   830
		vez que el programa se encuentre completamente depurado,
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   831
		puedes compilarlo con estas macros deshabilitadas y así
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   832
		evitar añadirle sobrecarga al momento de ejecutarlos.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   833
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   834
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   835
      <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   836
		Las macros <function>g_return_*()</function> debieran 
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   837
		emplearse al inicio de las funciones públicas de las
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   838
		bibliotecas, para asegurarse de que los argumentos que se pasan
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   839
		a ellas sean correctos y tengan un rango válido.  Si
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   840
		una función no retorna valor (por ejemplo, retorna
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   841
		<symbol>void</symbol>), debieras usar 
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   842
		<function>g_return_if_fail()</function>.  En caso contrario,
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   843
		debiera usar <function>g_return_val_if_fail()</function> 
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   844
		para retornar un valor &lsquo;seguro&rsquo;.  Cuando
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   845
		se invoca una función de biblioteca que usa estas macros 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   846
		con un argumento incorrecto , se producirá un
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   847
		mensaje de error y continuará la ejecución.  El
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   848
		programa cliente podrá tener algún sobresalto, hacer
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   849
		nada o caerse, pero al menos sabrá 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   850
		<emphasis>dónde</emphasis> se le ha pasado un valor 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   851
		incorrecto a la función.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   852
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   853
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   854
      <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   855
	  	La macro <function>g_assert()</function> debiera usarse para
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   856
		asegurar la consistencia interna de una biblioteca o
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   857
		programa.  En vez de retornar de la función y continuar
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   858
		la ejecución si la condición falla, 
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   859
		<function>g_assert()</function> producirá en mensaje de error
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   860
		e inmediatamente abortará el programa.  Esto es para
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   861
		evitar que el programa continúe ejecutándose en un
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   862
		estado inconsistente.  Debieras usar esta macro para
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   863
		asegurarte de que el programa o biblioteca está usando
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   864
		valores internos sanos.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   865
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   866
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   867
      <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   868
		La macro <function>g_assert_not_reached()</function> se
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   869
		usa para marcar el lugar en el código que nunca 
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   870
		debiera producirse.  Por ejemplo, si tienes una 
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   871
		cláusula <symbol>switch</symbol> y piensas que manejas
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   872
		todos los valores posibles en las etiquetas
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   873
		<symbol>case</symbol>, entonces debieras colocar 
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   874
		<function>g_assert_not_reached()</function> en la 
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   875
		etiqueta <symbol>default</symbol> para asegurarte de que
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   876
		el código nunca llegue allá (podría significar que
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   877
		ha perdido algún valor o que el programa se encuentra
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   878
		incorrecto).
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   879
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   880
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   881
      <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   882
		Estas macros ayudan a encontrar errores más rápido 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   883
		a través de avisos que se producen tan pronto como
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   884
		el programa alcanza un estado incosistente.  Úsalos
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   885
		frecuentemente y encontrarás muchos errores más 
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   886
		fácilmente.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   887
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   888
    </sect2>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   889
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   890
    <!-- GTK+-related Issues -->
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   891
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   892
    <sect2 id="assert-gtk">
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   893
      <title>Tópicos relacionados con GTK+</title>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   894
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   895
      <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   896
		Debe ser cuidadoso cuando escribas manejadores de eventos 
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   897
		&mdash; asegurate de que los eventos son manipulados en
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   898
		las situaciones apropiadas.  Es necesario asegurarse de
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   899
		que los manejadores de señales tengan los prototipos
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   900
		correctos.  Esto es muy importante.  Recuerda que no
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   901
		todos los prototipos de manejadores de señal se parecen
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   902
		a lo siguiente:
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   903
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   904
	<programlisting>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   905
static void my_handler (GtkWidget *widget, gpointer data);</programlisting>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   906
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   907
	Por ejemplo, los manejadores de eventos tienen un parámetro
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   908
	extra de evento y retornan <symbol>gint</symbol>.  Revisa los
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   909
	archivos de encabezado de GTK+ cuando necesites verificarlo.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   910
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   911
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   912
      <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   913
		Asegúrate que el programa trata de una forma apropiada
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   914
		todas las acciones generadas por el usuario.  Recuerda
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   915
		que el usuario puede cerrar una ventana en cualquier 
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   916
		momento a través del administrador de ventanas; tenlo
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   917
		presente y escribe el código necesario para manejar esta
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   918
		situación.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   919
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   920
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   921
      <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   922
		Si verificas los modificadores de teclas con una máscara
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   923
		de estado de eventos, por ejemplo,
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   924
		<keycombo><keycap>Control</keycap><keycap>F10</keycap></keycombo>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   925
		escribe lo siguiente:
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   926
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   927
	<programlisting>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   928
  guint modifiers;
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   929
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   930
  modifiers = gtk_accelerator_get_default_mod_mask ();
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   931
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   932
  if (event-&gt;keysym == GDK_F10
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   933
      &amp;&amp; (event-&gt;state &amp; modifiers) == GDK_CONTROL_MASK) {
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   934
          do_something ();
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   935
  }</programlisting>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   936
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   937
	Esto es necesario; si en vez de lo anterior escribes:
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   938
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   939
	<programlisting>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   940
  if (event-&gt;keysym == GDK_F10 &amp;&amp; event-&gt;state == GDK_CONTROL_MASK)</programlisting>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   941
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   942
		entonces el programa no funcionará correctamente si el
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   943
		usuario tiene, por ejemplo, activada la tecla 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   944
		<keycap>NumLock</keycap> &mdash; <keycap>NumLock</keycap> 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   945
		también es un modificador, y si está activado, entonces
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   946
		la máscara de estado del evento no será como se espera
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   947
		en el segundo ejemplo.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   948
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   949
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   950
      <!-- Visuals and Colormaps -->
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   951
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   952
      <sect3 id="visuals">
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   953
	<title>Vistas y mapas de color</title>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   954
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   955
	<para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   956
	  <!-- FIXME: Buscar un término adecuado para "Visual" en
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   957
	       vez de "vista" -->
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   958
	  Algunos usuarios utilizan tarjetas de vídeo avanzadas
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   959
	  (por ejemplo, SGIs y Suns) que soportan múltiples vistas
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   960
	  simúltaneamente.  Una vista define la representación en memoria
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   961
	  que usa un dispositivo de hardware para almacenar los 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   962
	  contenidos de una imagen.  Muchas tarjetas de vídeo de
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   963
	  PC soportan sólo una vista a la vez, pero el hardware
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   964
	  avanzado puede tener diferentes ventanas y pixmaps en
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   965
	  diferentes vistas simultáneamente.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   966
	</para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   967
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   968
	<para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   969
	  Es importante entender las vistas y mapas de colores si
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   970
	  vas a escribir código que crea ventanas y pixmaps por tus
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   971
	  propios medios, en vez de utilizar las funciones de alto
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   972
	  nivel como GnomeCanvas y GnomePixmap.  Para mayor información,
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   973
	  lea el manual de programación de Xlib.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   974
	</para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   975
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   976
	<para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   977
	  En general, sólo necesitas recordar que la vista y el mapa
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   978
	  de colores de un área de dibujo debe coincidir con los de 
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   979
	  otra área de dibujo si deseas copiar un trozo desde la
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   980
	  primera área de dibujo a la segunda.  Si no son las mismas,
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   981
	  podrías obtener el mensaje «BadMatch error» del servidor X y
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   982
	  tu aplicación muy probablemente abortará su ejecución.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   983
	</para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   984
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   985
	<para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   986
	  Si creas un contexto gráfico (GC) y lo compartes para pintar
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   987
	  en varias áreas de dibujo, asegúrate que todas ellas tengan
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   988
	  la misma vista y mapa de colores que fue definido para el 
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   989
	  GC.  Lo mismo se aplica si quieres copiar un área desde un
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   990
	  pixmap a una ventana; ambos deben tener la misma vista y mapa
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   991
	  de colores.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   992
	</para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   993
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
   994
	<para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   995
	  Si no estás seguro de que tu código lo hace correctamente, 
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   996
	  pregunta educadamente, en una de las listas de correo de 
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   997
	  desarrollo de GNOME, si alguien puede realizar una prueba con
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   998
	  una tarjeta de video que soporta esta característica.  Dicha 
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
   999
	  persona sabrá como arreglar el problema y te dirá al respecto.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1000
	</para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1001
      </sect3>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1002
    </sect2>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1003
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1004
    <!-- Unix-related Issues -->
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1005
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1006
    <sect2 id="unix">
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1007
      <title>Temas relacionados con Unix</title>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1008
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1009
      <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1010
		Verifica los valores de retorno de <emphasis>todas</emphasis>
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1011
		las llamadas al sistema que el programa realice.  Recuerda
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1012
		que muchas de las llamadas al sistema pueden ser 
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1013
		interrumpidas (por ejemplo, la llamada retorna 
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1014
	    <symbol>-1</symbol> y <symbol>errno</symbol> será definido a 
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1015
	    <symbol>EINTR</symbol>) y deben reiniciarse.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1016
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1017
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1018
      <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1019
		No asumas, por ejemplo, que la función 
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1020
		<function>write(2)</function> escribirá el buffer completo
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1021
		de una vez; tienes que verificar el valor de retorno, el cual
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1022
		indica el número de bytes escritos e intenta nuevamente 
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1023
		hasta que sea cero.  Si el valor de retorno es 
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1024
	    <symbol>-1</symbol>, recuerda
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1025
		verificar el valor de errno y manejar el error 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1026
		apropiadamente.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1027
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1028
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1029
      <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1030
		Si la aplicación llama a la función <function>fork(2)</function>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1031
		sin llamar a <function>execve(2)</function>, recuerda que
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1032
		el proceso hijo no puede hacer llamadas X.  Normalmente se
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1033
		puede diagnosticar este problema a través de un oscuro
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1034
		mensaje de error de Xlib.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1035
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1036
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1037
      <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1038
		Lee el libro «Advanced programming in the Unix 
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1039
		environment», de Richard Stevens, para aprender acerca de
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1040
		todos estos teassertmas y asegúrate que tus programas usan
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1041
		la API de Unix de forma correcta.  Si no deseas asegurarte
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1042
		del uso correcto de las llamadas Unix, pregunta en las
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1043
		listas de correo.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1044
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1045
    </sect2>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1046
  </sect1>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1047
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1048
  <!-- Security Considerations -->
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1049
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1050
  <sect1 id="security">
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1051
    <title>Consideraciones de seguridad</title>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1052
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1053
    <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1054
	  La seguridad es un tema complejo y en esta sección no se
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1055
	  puede explicar ni de lejos todo lo relacionado.
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1056
	  Intentaremos indicar las situaciones más comunes donde tus
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1057
	  programas deben interesarse por la seguridad.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1058
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1059
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1060
    <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1061
	  Es muy fácil crear hoyos de seguridad a través de la creación
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1062
	  incorrecta de archivos temporales en <filename>/tmp</filename>.
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1063
	  Debes garantizar que los archivos que usarás no existen al 
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1064
	  momento de su creación.  Usar un nombre de archivo «único»
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1065
	  e «impredecible» no es suficiente; debes garantizar que el archivo
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1066
	  con ese nombre no será creado por alguien más entre el tiempo
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1067
	  en que se determina el nombre y el tiempo en que es efectivamente
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1068
	  creado (básicamente los ataques involucran que un tercero
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1069
	  cree un enlace simbólico al archivo que ellos quieren 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1070
	  sobreescribir).
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1071
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1072
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1073
    <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1074
	  Afortunadamente, esto es fácil de hacer.  Usa el siguiente trozo
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1075
	  de código:
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1076
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1077
      <programlisting>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1078
	char *filename;
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1079
	int fd;
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1080
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1081
	do {
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1082
		filename = tempnam (NULL, "foo");
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1083
		if (!filename) {
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1084
			fprintf (stderr, "Could not create temporary file name\n");
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1085
			exit (EXIT_FAILURE);
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1086
		}
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1087
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1088
		fd = open (filename, O_CREAT | O_EXCL | O_TRUNC | O_RDWR, 0600);
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1089
		free (filename);
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1090
	} while (fd == -1);</programlisting>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1091
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1092
      Recuerde liberar <symbol>filename</symbol> usando la función
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1093
	  <function>free()</function> y llamar a las funciones 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1094
	  <function>close()</function> y <function>unlink()</function> 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1095
	  con el archivo respectivo cuando haya terminado; aquí
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1096
	  liberamos <symbol>filename</symbol> con <function>free()</function>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1097
	  inmediatamente y así no causará una pérdida de memoria.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1098
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1099
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1100
    <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1101
	  Si deseas usar la biblioteca estándar de E/S, puede usar la
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1102
	  función <function>fdopen()</function> para transformar el
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1103
	  descriptor de archivo en <symbol>FILE *</symbol>, o puedes
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1104
	  usar la función <function>tmpfile()</function> para hacerlo 
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1105
	  en un solo paso.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1106
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1107
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1108
    <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1109
	  Intenta no usar buffers de tamaño fijo.  Los buffers de tamaño
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1110
	  fijo para cadenas constituyen los típicas fuentes de hoyos
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1111
	  explotables que pueden llegar a oscuros errores.  Si definitivamente
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1112
	  debes usar buffers de tamaño fijo para cadenas, usa la función
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1113
      <function>g_snprintf()</function> para especificar el tamaño 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1114
	  máximo del buffer.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1115
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1116
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1117
    <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1118
	  Glib proporciona la, muy conveniente, función 
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1119
      <function>g_strdup_printf()</function>, la cual funciona como
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1120
      <function>sprintf()</function> pero automáticamente 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1121
	  localizará un buffer con el tamaño correcto.  El valor de retorno
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1122
	  de esta función debiera ser liberada usando
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1123
	  <function>g_free()</function>.  A menudo es más conveniente de
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1124
	  usar que <function>g_snprintf()</function>, ya que esta no 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1125
	  limita el tamaño de las cadenas que un programa puede manipular.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1126
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1127
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1128
    <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1129
	  Si deseas concatenar un grupo de cadenas, puedes usar la función
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1130
      <function>g_strconcat()</function>, la cual recibe una lista
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1131
	  variable de cadenas y un puntero a <symbol>NULL</symbol>
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1132
	  como último argumento.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1133
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1134
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1135
    <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1136
      <emphasis>Bajo ninguna circunstancia</emphasis> crees un 
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1137
	  programa GTK+ con setuid root.  Las bibliotecas de GTK+ y
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1138
	  GNOME son grandes y complejas y no han tenido auditorías
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1139
	  de seguridad.  En cualquier caso, no debieras querer que 
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1140
	  una pieza tan grande código sea setuid root.  Si definitivamente
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1141
	  requieres usar privilegios de root para algo, escribe un 
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1142
	  programa que sea la interfaz de usuario como un proceso
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1143
	  normal, sin privilegios y crea un programa nexo que
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1144
	  tenga setuid y se encargue de realizar la operaciones
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1145
	  «peligrosas».  Además, notifica a las listas
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1146
	  de correo de desarrollo de GNOME indicando que requieres
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1147
	  que alguien realice una auditoría de seguridad a tu
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1148
	  programa nexo.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1149
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1150
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1151
    <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1152
	  En general, si no estás seguro si puedes crear un riesgo de
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1153
	  seguridad, pregunte en las listas de correo de desarrollo
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1154
	  de GNOME.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1155
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1156
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1157
    <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1158
	  Puedes leer más sobre temas de seguridad que debieras encontrar
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1159
	  cuando programes una aplicación Unix en el documento
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1160
      <ulink URL="http://www.fish.com/security/murphy.html">«Murphy's
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1161
      Law and Computer Security»</ulink>, de Wietse Wenema.  
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1162
	  Hay otros documentos de seguridad en <ulink
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1163
      URL="http://www.fish.com/security">el sitio fish.com</ulink>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1164
	  que podrías encontrar interesante.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1165
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1166
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1167
    <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1168
	  Puedes encontrar muchas otras guías útiles para escribir programas
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1169
	  seguros en <ulink
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1170
      url="http://www.dwheeler.com/secure-programs">«Secure
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1171
      Programming for Linux and Unix HOWTO»</ulink>.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1172
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1173
  </sect1>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1174
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1175
  <!-- Performace -->
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1176
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1177
  <sect1 id="performance">
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1178
    <title>Rendimiento</title>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1179
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1180
    <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1181
	  No leas esta sección hasta que estés seguro que tu programa está
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1182
	  correcto, por ejemplo, cuando estés seguro que funciona 
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1183
	  correctamente y no tiene errores.  Es más importante que
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1184
	  el código sea correcto a que sea rápido.  Un programa lento
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1185
	  pero correcto es mucho mejor a uno rápido pero con errores.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1186
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1187
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1188
    <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1189
	  Si quieres optimizar tu programa, el primer paso es determinar
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1190
	  un perfil al programa ejecutándolo con datos de la vida real
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1191
	  y recopilar puntos calientes que requieran optimización.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1192
	  Esto ayudará a determinar los lugares que necesitan optimizarse.
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1193
	  Es importante que nunca adelantes la optimización si no tienes
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1194
	  una idea clara sobre donde está el problema.  Podrías terminar 
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1195
	  perdiendo el tiempo en agilizar una rutina que no es la causa 
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1196
	  del cuello de boteLla y como resultado podrías terminar ofuscando 
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1197
	  dicha rutina.  Esto podría reducir la legibilidad y mantenibilidad
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1198
	  del código sin ganancia visible en velocidad.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1199
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1200
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1201
    <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1202
	  Un código sencillo es bueno porque es fácil de entender y 
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1203
	  mantener.  Si puedes escribir código simple que además sea
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1204
	  potente y rápido, tanto mejor.  Si tienes un trozo de código
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1205
	  inteligente pero que no es fácil de seguir, entonces documéntalo
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1206
	  para que las personas no lo estropeen accidentalmente.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1207
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1208
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1209
    <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1210
	  No escribas código que sea difícil de leer y mantener por el
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1211
	  sólo hecho de hacerlo más rápido.  En cambio, prefiere un algoritmo
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1212
	  agradable y claro e impleméntalo claramente.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1213
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1214
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1215
    <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1216
	  Hacer un buen trabajo en el caso general es a menudo mejor que
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1217
	  tener muchos casos especiales.  Sólo provee casos especiales
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1218
	  cuando se han identificado puntos débiles en el programa.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1219
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1220
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1221
    <!-- List Management in Glib -->
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1222
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1223
    <sect2 id="list">
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1224
      <title>Administración de listas en Glib</title>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1225
    	<para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1226
		  Evita emplear construcciones que terminen ralentizando
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1227
		  los algoritmos.  Si usas
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1228
		  <function>g_list_insert_sorted()</function> o
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1229
    	  <function>g_list_append()</function> sin ningún cuidado,
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1230
		  fácilmente puedes tener un algoritmo que se ejecuta en
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1231
		  tiempo proporcional a O(n<superscript>2</superscript>).  
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1232
		  Normalmente puedes crear listas hacia atrás, usando
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1233
    	  <function>g_list_prepend()</function>, e invirtiéndola
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1234
		  cuando hayas terminado usando 
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1235
		  <function>g_list_reverse()</function>.  Esta es una
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1236
		  operación O(n).  Y si necesitas una lista ordenada, puedes
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1237
		  crearla de la misma forma (hacia atrás) y una vez terminado,
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1238
		  usar <function>g_list_sort()</function>.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1239
    	</para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1240
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1241
    	<para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1242
		  Si necesitas una lista ordenada en todo momento, puede ser
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1243
		  mejor emplear un estructura de árbol o un híbrido 
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1244
		  lista/árbol.  Si necesitas construir una lista añadiendo
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1245
		  nodos a ella, mantén un puntero al final de la lista
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1246
		  y ve cambiándola según sea apropiado; esto te permitirá
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1247
		  insertar un nodo al inicio o al final en un tiempo constante.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1248
    	</para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1249
    </sect2>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1250
  </sect1>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1251
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1252
  <!-- Localization -->
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1253
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1254
  <sect1 id="l10n">
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1255
    <title>Localización</title>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1256
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1257
    <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1258
	  Se pretende que GNOME pueda ejecutarse en distintas localidades
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1259
	  y lenguajes, y los programas debieran tener esto en cuenta.  No
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1260
	  tienes que localizar los programas, sólo debes permitir que éstos
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1261
	  sean traducibles y localizables.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1262
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1263
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1264
    <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1265
	  Debes recordar que los diferentes idiomas humanos tienen diferentes
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1266
	  gramáticas, así que no debieras suponer la forma de estructurar
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1267
	  cada frase.  Esto es importante, por ejemplo, cuando se 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1268
	  construyen cadenas a partir de trozos separados.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1269
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1270
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1271
    <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1272
	  La concatenación normalmente no es la forma correcta de construir
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1273
	  una cadena para que sea presentada al usuario.  Normalmente terminan
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1274
	  en mensajes que no pueden ser traducidos correctamente en todos
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1275
	  los idiomas.  En vez de concatenar, intenta usar
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1276
	  <function>g_strdup_printf()</function>, por ejemplo:
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1277
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1278
      <programlisting>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1279
	/* Una forma no muy buena */
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1280
	char *message = g_strconcat (_("Hello, "),
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1281
				     name,
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1282
				     _(", would you like fries with that?"),
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1283
				     NULL);
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1284
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1285
	/* Una mejor forma */
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1286
	char *message = g_strdup_printf (_("Hello, %s, would you like fries with that?"),
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1287
					 name);</programlisting>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1288
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1289
	  Esto permitirá al traductor mover %s donde corresponda según
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1290
	  lo requiera la gramática del idioma en el cual trabaja.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1291
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1292
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1293
    <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1294
	  Recuerda que no todos los idiomas forman los plurales añadiendo
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1295
	  una «s» a las palabras.  Además, las estructuras de
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1296
	  frases pueden cambiar con los plurales.  Por ejemplo,
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1297
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1298
      <programlisting>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1299
	/* Una forma no muy buena */
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1300
	printf (_("%d happy monkey%s bouncing on the bed."),
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1301
		num_monkeys,
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1302
		(num_monkeys > 1) ? "s", "");
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1303
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1304
	/* Una mejor forma */
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1305
	printf ((num_monkeys > 1)
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1306
		? _("%d happy monkeys bouncing on the bed."),
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1307
		: _("%d happy monkey bouncing on the bed."));</programlisting>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1308
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1309
	  Se requiere de esta forma ya que el plural se forma de 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1310
	  distintas maneras en distintos idiomas, y la estructura
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1311
	  completa de la frase puede cambiar.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1312
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1313
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1314
    <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1315
	  Si el programa muestra fechas u horas, usa la función
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1316
      <function>strftime()</function> para darles formato como
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1317
	  cadenas.  Esto se encargará de usar la representación
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1318
	  adecuada de fecha y hora de acuerdo a la definición local
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1319
	  del usuario.  Además, si el programa debe generar una
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1320
	  representación visual de un calendario, recuerda que en
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1321
	  algunos países se considera como primer día de la semana
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1322
	  el domingo y no el lunes.  El programa debiera permitir 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1323
	  ambas formas de calendarios.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1324
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1325
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1326
    <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1327
	  Si el programa usa medidas, asegúrate de permitir tanto
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1328
	  el sistema métrico decimal como el sistema imperial (o anglosajón).
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1329
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1330
  </sect1>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1331
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1332
  <!-- Binary Compatibility -->
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1333
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1334
  <sect1 id="binary">
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1335
    <title>Compatibilidad binaria en las bibliotecas</title>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1336
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1337
    <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1338
	  Para bibliotecas estables y ya liberadas, es muy importante
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1339
	  intentar preservar la compatibilidad binaria en las revisiones
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1340
	  mayores del código.  Los desarrolladores de bibliotecas deben
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1341
	  intentar no alienar a los usuarios realizando de forma frecuente
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1342
	  cambios que sean binariamente incompatibles en bibliotecas que
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1343
	  son de producción.  Por supuesto, en aquellas bibliotecas que se
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1344
	  encuentran en desarrollo o están etiquetadas como no finalizadas
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1345
	  puedes realizar tantos cambios como se necesiten.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1346
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1347
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1348
    <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1349
	  Una biblioteca típicamente exporta un número de interfaces.  Estas
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1350
	  incluyen nombres de rutinas, las firmas o prototipos de estas
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1351
	  rutinas, variables globales, estructuras, campos de estructura
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1352
	  (tanto los tipos como su significado), el significado de los
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1353
	  valores enumerados y la semántica de los archivos que la
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1354
	  biblioteca crea.  Mantener compatibilidad binaria significa que
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1355
	  estas interfaces no cambiarán.  Puedes añadir nuevas interfaces
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1356
	  sin romper la compatibilidad binaria, pero no puedes cambiar
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1357
	  las ya existentes, ya que los programas antiguos no se ejecutarán
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1358
	  correctamente.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1359
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1360
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1361
    <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1362
	  Esta sección incluye un número de ideas acerca de como lograr
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1363
	  que el código de una biblioteca sea compatible con sus
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1364
	  versiones anteriores.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1365
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1366
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1367
    <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1368
	  Mantener la compatibilidad binaria significa que los programas
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1369
	  y archivos objetos que fueron compilados con una versión 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1370
	  previa del código continuarán funcionando sin recompilar aún
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1371
	  cuando la biblioteca sea reemplazada. Es posible encontrar
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1372
	  una descripción detallada en el nodo info
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1373
      <filename>(libtool)Interfaces</filename> de la documentación
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1374
	  de GNU libtool.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1375
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1376
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1377
    <!-- Private Information in Structures -->
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1378
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1379
    <sect2 id="private">
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1380
      <title>Información privada en las estructuras</title>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1381
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1382
      <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1383
		En el sistema GNOME es una tarea muy común crear un
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1384
		nuevo <structname>GtkObject</structname> para crear
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1385
		una estructura cuyo primer miembro corresponde a la 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1386
		clase de la cual hereda este objeto y posteriormente
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1387
		un número de variables de instancia que se añaden 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1388
		después del primer miembro.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1389
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1390
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1391
      <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1392
		Este esquema de diseño normalmente lleva a que el código
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1393
		sea difícil de actualizar y cambiar: si se quiere
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1394
		extender un objeto donde se necesita mantener su estado 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1395
		interno, los programadores necesitan recurrir a varios 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1396
		hacks para mantener el mismo tamaño de las estructuras.  
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1397
		Esto hace difícil agregar nuevos campos a las estructuras 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1398
		públicas sin romper la compatibilidad binaria, ya que 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1399
		los campos de la estructura pueden cambiar y el tamaño 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1400
		de las estructuras pueden variar.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1401
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1402
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1403
      <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1404
		Por consiguiente, se sugiere una estrategia que puedan
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1405
		adoptar los desarrolladores en el momento de crear nuevos
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1406
		objetos.  Esta estrategia asegurará la compatibilidad
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1407
		binaria y al mismo tiempo mejorará la legibilidad y 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1408
		mantenibilidad del código.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1409
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1410
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1411
      <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1412
		La idea es que, para un objeto dado, el programador
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1413
		debiera crear tres archivos: el primero que contiene
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1414
		el contrato entre la biblioteca y el usuario (esto
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1415
		es el archivo de encabezado que se instala en el 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1416
		sistema); el segundo contiene la implementación del
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1417
		objeto; y el tercer archivo contiene la definición 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1418
		de la estructura para los campos privados o internos
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1419
		que no necesitan estar en la estructura pública.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1420
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1421
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1422
      <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1423
		La API pública de la estructura podría incluir un
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1424
		puntero a un elemento privado, el cual podría 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1425
		apuntar a los datos privado de la instancia. Las
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1426
		rutinas de implementación podría dereferenciar
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1427
		este punto para acceder a los datos privados; por
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1428
		supuesto, el puntero apunta a la estructura que se
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1429
		localiza privadamente.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1430
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1431
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1432
      <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1433
		Por ejemplo, imagina que se crea el objeto GnomeFrob. 
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1434
		La implementación del widget será dividido en tres 
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1435
		archivos:
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1436
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1437
	<table>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1438
	  <title>Archivos que muestran el widget de ejemplo 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1439
	  GnomeFrob</title>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1440
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1441
	  <tgroup cols="2">
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1442
	    <thead>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1443
	      <row>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1444
		<entry>Archivo</entry>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1445
		<entry>Contenido</entry>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1446
	      </row>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1447
	    </thead>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1448
	    <tbody>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1449
	      <row>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1450
		<entry><filename>gnome-frob.h</filename></entry>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1451
		<entry>API pública de GnomeFrob</entry>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1452
	      </row>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1453
	      <row>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1454
		<entry><filename>gnome-frob.c</filename></entry>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1455
		<entry>Implementación del objeto Gnomefrob</entry>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1456
	      </row>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1457
	      <row>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1458
		<entry><filename>gnome-frob-private.h</filename></entry>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1459
		<entry>Datos privados de la implementación de GnomeFrob.
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1460
			Debieras querer usar esto si planea compartir los
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1461
			datos privados a través de varios archivos C. Si
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1462
			limitas el uso de la información privada a sólo un
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1463
			archivo, no necesita esto, ya que al definir la
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1464
			estructura en el archivo de implementación se logrará
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1465
			el mismo efecto.</entry>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1466
	      </row>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1467
	    </tbody>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1468
	  </tgroup>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1469
	</table>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1470
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1471
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1472
      <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1473
	<example>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1474
	  <title>Ejemplo de la API pública de <filename>gnome-frob.h</filename>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1475
	  </title>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1476
	  <programlisting>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1477
typedef struct _GnomeFrob GnomeFrob;
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1478
typedef struct _GnomeFrobPrivate GnomeFrobPrivate;
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1479
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1480
struct _GnomeFrob {
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1481
       GtkObject parent_object;
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1482
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1483
       int  public_value;
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1484
       GnomeFrobPrivate *priv;
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1485
} GnomeFrob;
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1486
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1487
GnomeFrob *gnome_frob_new (void);
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1488
void       gnome_frob_frobate (GnomeFrob *frob);</programlisting>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1489
	</example>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1490
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1491
	<example>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1492
	  <title>Ejemplo de 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1493
	  <filename>gnome-frob-private.h</filename></title>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1494
	  <programlisting>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1495
typedef struct {
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1496
        gboolean frobbed;
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1497
} GnomeFrobPrivate;</programlisting>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1498
	</example>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1499
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1500
	<example>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1501
	  <title>Ejemplo de la implementación de 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1502
	  <filename>gnome-frob.c</filename>.</title>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1503
	  <programlisting>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1504
void gnome_frob_frobate (GnomeFrob *frob)
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1505
{
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1506
        g_return_if_fail (frob != NULL);
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1507
	g_return_if_fail (GNOME_IS_FROB (frob));
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1508
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1509
	frob->priv->frobbed = TRUE;
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1510
}</programlisting>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1511
	</example>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1512
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1513
		Fíjese en el uso de prototipos de estructura: esto permite que
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1514
		el compilador realice más verificaciones en tiempo de
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1515
		compilación respecto a los tipos que estan siendo empleados.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1516
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1517
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1518
      <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1519
		Este esquema es útil en algunas situaciones, particularmente
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1520
		en el caso en el cual vale la pena almacenar un puntero
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1521
		extra para una instancia del objeto.  Si esto no fuera
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1522
		posible, el programador necesitaría recurrir a otros
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1523
		artilugios para evitar este problema.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1524
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1525
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1526
      <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1527
		El propósito de tener un archivo de encabezado privado
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1528
		extra para las estructuras privadas es permitir que las
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1529
		clases derivadas usen esta información.  Por supuesto,
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1530
		una buena práctica de programación indicaría que debiera
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1531
		proveerse de interfaces o métodos de acceso precisamente
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1532
		para que el programador no tenga que lidiar con 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1533
		estructuras privadas.  Se debiera intentar alcanzar un 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1534
		balance entre buena práctica y pragmatismo cuando se
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1535
		crean estructuras privadas y métodos de acceso públicos.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1536
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1537
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1538
      <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1539
		Podrían aparecer algunos problemas, por ejemplo, cuando
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1540
		se ha enviado un versión del código y que está siendo
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1541
		ampliamente usado y se desea extenderlo.  Hay dos 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1542
		soluciones para esto.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1543
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1544
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1545
      <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1546
		La primera opción es encontrar un campo puntero en la
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1547
		estructura pública que pueda hacerse privada y 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1548
		reemplazar el puntero a la parte privada de la 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1549
		estructura.  Esto preserva el tamaño de la estructura
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1550
		ya que, para los propósitos de GNOME, se puede
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1551
		asumir que los punteros son todos del mismo tamaño.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1552
		Se puede hacer que este campo apunte a la parte privada
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1553
		de la estructura que será ubicada por la función que
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1554
		originalmente creaba la estructura pública.  Es
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1555
		importante que este campo sea llamado
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1556
		<structfield>private</structfield>, se trata de
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1557
		una palabra reservada de C++ y creará problemas cuando
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1558
		el archivo de encabezado sea usado desde programas
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1559
		fuentes C++ &mdash; mejor llámalo 
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1560
		<structfield>priv</structfield>.  Por supuesto, este
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1561
		tipo de cambios sólo funcionará si el antiguo campo
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1562
		puntero solamente era usado para propósitos internos;
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1563
		si los usuarios de la biblioteca habían tenido acceso
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1564
		a dicho campo para cualquier propósito, será necesario
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1565
		buscar otro campo o buscar una solución diferente.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1566
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1567
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1568
      <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1569
		Si la estructura original fue derivada de
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1570
	<structname>GtkObject</structname> y no hay campos punteros
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1571
	que puedan ser reemplazados, puedes usar la facilidad
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1572
	de datos de objetos de GTK+.  Esto permite asociar punteros
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1573
	a datos arbitrarios a objetos.  Usa la función
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1574
	<function>gtk_object_set_data()</function> para adjuntar
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1575
	valores o estructuras a un objeto y cuando requieras usarlos
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1576
	la función <function>gtk_object_get_data()</function> 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1577
	permitirá recuperar dichos valores.  Esto puede ser empleado
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1578
	para adjuntar una estructura privada a un objeto GTK+.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1579
	Esto no es tan eficiente como el enfoque anterior, pero podría
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1580
	no importar para el dominio particular de la aplicación.  Si
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1581
	los datos serán accedidos frecuentemente, se pueden usar
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1582
	quarks en vez de cadenas para agregar y obtenerlos a través
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1583
	de las funciones
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1584
	<function>gtk_object_set_data_by_id()</function> y
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1585
	<function>gtk_object_get_data_by_id()</function>, 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1586
	respectivamente.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1587
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1588
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1589
    </sect2>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1590
  </sect1>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1591
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1592
  <!-- Modifying Other People's Code -->
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1593
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1594
  <sect1 id="modify">
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1595
    <title>Cómo modificar el código de otros</title>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1596
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1597
    <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1598
	  GNOME es un proyecto de equipo, así las contribuciones de
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1599
	  código a programas de otras personas siempre son apreciadas.
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1600
	  Sigue los siguientes lineamientos cuando modifiques el código
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1601
	  de otra persona.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1602
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1603
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1604
    <!-- General Etiquette -->
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1605
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1606
    <sect2 id="etiquette">
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1607
      <title>Etiqueta general</title>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1608
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1609
      <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1610
		Siga el mismo estilo de indentación usado en el código 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1611
		original.  El código original perdurará durante más tiempo
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1612
		que el que le pueda dedicar, mantener las 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1613
		contribuciones consistentes respecto a la indentación
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1614
		es más importante que forzar su estilo de indentación
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1615
		en el código.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1616
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1617
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1618
      <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1619
		Aunque sus parches pueden implementar una 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1620
		funcionalidad muy llamativa, es muy molesto para el 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1621
		autor tener que reindentar el código antes de aplicar
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1622
		un parche al código principal.  Así, si el código
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1623
		original luce como:
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1624
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1625
      <programlisting>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1626
int
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1627
sum_plus_square_of_indices (int *values, int nvalues)
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1628
{
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1629
	int i, total;
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1630
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1631
	total = 0;
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1632
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1633
	for (i = 0; i &lt; nvalues; i++)
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1634
		total += values[i] + i * i;
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1635
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1636
	return total;
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1637
}</programlisting>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1638
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1639
	entonces no agregues una función que luce como:
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1640
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1641
	<programlisting>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1642
int sum_plus_cube_of_indices(int *values, int nvalues) {
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1643
  int i,total;
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1644
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1645
  total=0;
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1646
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1647
  for (i=0;i&lt;nvalues;i++)
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1648
    total+=values[i]+i*i*i;
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1649
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1650
  return total;
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1651
}</programlisting>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1652
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1653
	En el segundo ejemplo, la indentanción y ubicación de las
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1654
	llaves no coincide con el código original, no hay espacios 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1655
	alrededor de los operadores y el código no se parecerá
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1656
	al original.  Sigue el estilo de programación del autor
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1657
	original del programa y los parches que envías tendrán una mejor
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1658
	oportunidad de ser aceptados.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1659
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1660
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1661
      <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1662
		No repares errores con artilugios o hacks rápidos; repáralo
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1663
		correctamente.  Tampoco añadas características como hacks o
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1664
		con código que no sea extensible; es mejor rehacer el 
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1665
		código original para que sea extensible y luego agrega
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1666
		la nueva característica, utilizando el código como 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1667
		estructura.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1668
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1669
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1670
      <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1671
		La limpieza de código siempre es bienvenida; si encuentras
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1672
		trozos de código feos y sucios en GNOME, será muy
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1673
		apreciado si envías parches que hagan el código más
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1674
		agradable y fácil de mantener.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1675
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1676
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1677
      <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1678
		Como siempre, asegúrate de que el código que contribuye compila
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1679
		sin ningún tipo de aviso, que tenga los prototipos correctos
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1680
		y que sigan las directrices de este documento.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1681
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1682
    </sect2>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1683
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1684
    <!-- Documenting Your Changes -->
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1685
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1686
    <sect2 id="document">
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1687
      <title>Cómo documentar los cambios</title>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1688
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1689
      <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1690
		GNOME utiliza los archivos &ChangeLog; estándar de GNU para
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1691
		documentar los cambios al código.  Cada cambio que 
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1692
		efectúes a un programa <emphasis>debe</emphasis> ser
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1693
		acompañado por una registro en el &ChangeLog;.  Esto
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1694
		permite a las personas leer la historia de cambios 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1695
		del programa de una manera sencilla.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1696
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1697
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1698
      <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1699
		Si usas &Emacs;, puede agregar las líneas al 
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1700
		&ChangeLog; presionando «C-x 4 a».
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1701
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1702
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1703
      <note>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1704
	<para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1705
		Si conoces la forma de realizarlos para otros editores
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1706
		populares, agradeceremos que nos lo hagas saber para
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1707
		expandir este documento.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1708
	</para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1709
      </note>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1710
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1711
      <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1712
	Cada registro en el &ChangeLog; tiene un forma general:
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1713
	<programlisting>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1714
1999-04-19  J. Random Hacker  &lt;jrandom@foo.org&gt;
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1715
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1716
	* foo.c (some_function): Changed the way MetaThingies are
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1717
	frobnicated.  We now use a hash table instead of a linked list to
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1718
	look MetaThingies up.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1719
	(some_other_function): Support the MetaThingies hash table by
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1720
	feeding it when necessary
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1721
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1722
	* bar.c (another_function): Fixed bug where it would print "Take
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1723
	me to your leader" instead of "Hello, World".
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1724
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1725
1999-04-18  Johnny Grep  &lt;grep@foobar.com&gt;
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1726
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1727
	* baz.c (ugly_function): Beautified by using a helper function.</programlisting>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1728
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1729
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1730
      <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1731
		Si agregas una nueva función a una biblioteca, escribe
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1732
		la referencia necesaria y la documentación de programación.
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1733
		Puedes escribir una referencia a la documentacion 
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1734
		en línea usando el formato de comentarios descrito en
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1735
		<filename>gnome-libs/devel-docs/api-comment-style.txt</filename>.
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1736
		Si usas &Emacs;,
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1737
		<filename>gnome-libs/tools/gnome-doc/gnome-doc.el</filename>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1738
		provee un acelerador que puede ser empleado para añadir
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1739
		una plantilla de documentación al programa.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1740
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1741
    </sect2>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1742
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1743
    <!-- Changing Code on CVS -->
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1744
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1745
    <sect2 id="change-cvs">
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1746
      <title>Cómo actualizar en CVS</title>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1747
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1748
      <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1749
		Si tienes acceso de escritura en el repositorio CVS de GNOME,
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1750
		debes seguir algunas políticas adicionales.  Ya que estás
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1751
		trabajando en la copia maestra de los fuentes, debes tener
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1752
		especial cuidado.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1753
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1754
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1755
      <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1756
		Si estás reparando algo en un programa que está en el CVS
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1757
		o si estás añadiendo una funcionalidad allí, y si no has
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1758
		estado trabajando en dicho programa por un período largo
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1759
		de tiempo, pregunta al autor original antes de aplicar
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1760
		sus parches.  Generalmente está bien formular estas
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1761
		preguntas en la lista de correo
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1762
		<filename>gnome-devel-list</filename>.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1763
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1764
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1765
      <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1766
		Una vez que el autor del programa te indique como un
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1767
		&lsquo;contribuyente frecuente&rsquo;, puedes comenzar 
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1768
		aplicar los parches sin previo consentimiento. Si
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1769
		quieres aplicar una reorganización mayor del código,
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1770
		debieras preguntar primero.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1771
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1772
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1773
      <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1774
		Algunos módulos en el CVS tienen rama estable y de
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1775
		desarrollo.  Normalmente el desarrollo debiera ir
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1776
		en la rama HEAD en el CVS, y la rama estable debiera
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1777
		mantenerse separadamente.  Generalmente no se añaden
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1778
		nuevas características a las rama estable; sólo
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1779
		se reparan errores.  Repara el error a la rama estable
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1780
		y pregunta al autor principal sobre la política para
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1781
		mezclar parches en la rama de desarrollo; algunos
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1782
		autores prefieren hacerlo por lotes, mientras hay otros
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1783
		que prefieren mezclarlos inmediatamente.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1784
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1785
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1786
      <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1787
		Si trabajas en una característica experimental que
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1788
		podría estropear mucho código, crea una rama en el CVS
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1789
		y realiza los cambios allí.  No los mezcles en la rama
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1790
		principal de desarrollo hasta que te encuentres
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1791
		razonablemente seguro que funcionará correctamente y que
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1792
		se integrará bien dentro del resto del código.  El uso de
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1793
		una rama para trabajo en características experimentales
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1794
		te permitirá evitar interrumpir el trabajo de otros
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1795
		desarrolladores.  Pregunte al autor principal antes de
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1796
		mezclar tu rama y traer sus cambios a la parte principal 
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1797
		del árbol.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1798
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1799
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1800
      <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1801
		Como siempre, agrega un registro en el &ChangeLog; 
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1802
		cuando realices un cambio.  Algunos autores tienen la
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1803
		política de rechazar, correctamente, los cambios que 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1804
		no tienen tal registro.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1805
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1806
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1807
      <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1808
		Algunas veces existen diferentes políticas para los módulos,
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1809
		verifica si el módulo contiene un archivo
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1810
        <filename>README.CVS</filename>.  Si es así, lee ese archivo
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1811
		antes de realizar cambios.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1812
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1813
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1814
      <!-- Branches and Tags -->
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1815
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1816
      <sect3 id="branches">
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1817
	<title>Ramas y marcas</title>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1818
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1819
	<para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1820
	  Tenemos una convención para nombrar las ramas y marcas o
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1821
	  puntos de una rama en el repositorio de CVS de GNOME. 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1822
	  Las marcas deben ser definidas después que se libera cada
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1823
	  nueva version y deben ser de la forma
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1824
	  «MODULE_MAJOR_MINOR_MICRO», por ejemplo,
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1825
	  «GNOME_LIBS_1_0_53».  Los puntos de una rama
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1826
	  deben ser de la forma «MODULE_BRANCH_ANCHOR», 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1827
	  como en «GNOME_LIBS_1_0_ANCHOR».  Finalmente, 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1828
	  una rama raíz en este punto debiera ser de la forma
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1829
	  «module-branch», por ejemplo, 
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1830
	  «gnome-libs-1-0».  Usa esta convención cuando
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1831
	  crees marcas, puntos de una rama y ramas.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1832
	</para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1833
      </sect3>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1834
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1835
      <!-- Additional CVS Policies -->
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1836
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1837
      <sect3 id="cvs-policies">
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1838
	<title>Políticas adicionales del CVS</title>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1839
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1840
	<para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1841
	  CVS no proporciona un manera preconstruida para renombrar archivos
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1842
	  o moverlos a otros directorios.  Debiera planificar 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1843
 	  cuidadosamente el árbol del repositorio de tal forma que evite
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1844
	  mover o renombrar archivos.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1845
	</para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1846
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1847
	<para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1848
	  En el caso que debas mover o renombrar un archivo en el CVS,
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1849
	  <emphasis>NO EJECUTES</emphasis> «cvs remove»
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1850
	  y luego «cvs add».  Si lo haces, los archivos
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1851
	  «nuevos» perderán la capacidad de seguir su
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1852
	  historial de cambios, ya que desde el punto de vista de CVS
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1853
	  serán archivos completamente nuevos en su revisión
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1854
	  inicial.  Un objetivo del repositorio CVS de GNOME es 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1855
	  poder seguir la historia de los fuentes de manera 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1856
	  precisa desde el inicio.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1857
	</para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1858
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1859
	<para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1860
	  <emphasis>Por favor</emphasis>, pregunte al mantenedor
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1861
	  del CVS, esto es, una persona conocida con acceso shell
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1862
	  a la máquina con CVS, para realizar la cirugía necesaria
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1863
	  para mover los archivos por ti.  Esto requiere 
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1864
	  conocimiento de la forma en que funciona CVS y debe ser
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1865
	  hecho muy cuidadosamente.  La recuperación de un error de
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1866
	   «cvs add/remove» es una tarea muy desagradable;
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1867
	  Si mueves archivo en esta forma equivocada, un mantenedor
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1868
	  del CVS, quien tendrá que ir a reparar y realizar el trabajo
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1869
	  sucio, reclamará las penas del infierno.  Así es que mejor
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1870
	  pregunta por una persona que pueda mover los archivos por
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1871
	  ti.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1872
	</para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1873
      </sect3>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1874
    </sect2>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1875
    
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1876
  </sect1>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1877
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1878
  <!-- Maintaining a Package -->
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1879
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1880
  <sect1 id="maintain">
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1881
    <title>Cómo mantener un paquete</title>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1882
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1883
    <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1884
	  Un mantenedor de paquete es una persona que se preocupa de
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1885
	  liberar versiones, integrar cambios de otras personas y,
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1886
	  en general, ser responsable de un paquete.  Durante el
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1887
	  período de vida de un paquete, éste puede cambiar de 
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1888
	  mantenedores, por ejemplo, una persona que pierde interés
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1889
	  o que ya no puede dedicarle tiempo suficiente como mantenedor.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1890
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1891
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1892
    <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1893
	  En conformidad con los Estándares de programación de GNU, GNOME
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1894
	  usa GNU Autoconf para manejar la portabilidad  y GNU Automake
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1895
	  para crear makefiles.  Automake hace especialmente fácil
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1896
	  construir paquetes correctos, así que si eres un mantenedor
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1897
	  de paquetes, debieras aprender como usarlo.  Autoconf y 
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1898
	  Automake tienen muchas áreas truculentas, así que siéntete
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1899
	  libre de pedir ayuda en las listas de desarrollo de GNOME
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1900
	  si tienes preguntas sobre la forma correcta de construir
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1901
	  makefiles para tu paquete.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1902
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1903
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1904
    <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1905
	  Un número de personas regularmente contribuye con traducciones
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1906
	  localizadas de los catálogos de mensajes en los paquetes de
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1907
	  GNOME.  Para mantener las traducciones actualizadas tanto como
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1908
	  sea posible, los mantenedores deben coordinarse con los 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1909
	  traductores para que estos últimos puedan actualizar las
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1910
	  traducciones a tiempo cuando se va a liberar una nueva 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1911
	  versión del paquete.  Una buena forma de notificar a los
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1912
	  traductores consiste en enviar un mensaje a
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1913
      <email>gnome-i18n@gnome.org</email> con suficientes
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1914
	  días de anticipación.  Esto les permitirá actualizar sus
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1915
	  respectivas traducciones a tiempo para puedan ser incluidas
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1916
	  en la siguiente versión liberada.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1917
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1918
  </sect1>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1919
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1920
  <!-- Memory Leaks Agenda -->
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1921
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1922
  <sect1 id="memory-leak">
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1923
    <title>¿Por qué preocuparse por la pérdida de memoria?</title>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1924
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1925
    <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1926
	  Échale un vistazo a la lista de errores de Mozilla y una cosa es
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1927
	  clara: el nuevo código que entra a Mozilla no es (o no ha sido)
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1928
	  verificado suficientemente por pérdida de memoria y problemas
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1929
	  de acceso.
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1930
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1931
  
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1932
    <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1933
	  Las pérdidas de memoria son malas por varias razones:
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1934
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1935
      <itemizedlist>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1936
	<listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1937
	  <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1938
		Se comerá el área de intercambio lentamente. A la larga tu
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1939
		programa, o hasta tu máquina sucumbirán.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1940
          </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1941
          <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1942
		Nadie quiere que su programa o biblioteca adquiera la 
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1943
		reputación de ser una porquería sólo porque uno ha sido un
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1944
		vago.  Déjaselo a las personas en Redmond.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1945
		</para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1946
	</listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1947
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1948
	<listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1949
	  <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1950
		Ocultan el mal uso de la memoria.  Si olvidas liberar la
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1951
		memoria, no hay forma de atrapar las lecturas y
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1952
		escrituras a esos trozos de memoria.  Si, posteriormente,
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1953
		reparas la pérdida, una parte completamente distinta
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1954
		del programa podría fallar.
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1955
      </para>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1956
	</listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1957
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1958
	<listitem>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1959
      <para>
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1960
		Cuando se usan verificadores automáticos de memoria,
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1961
		nadie quiere ver 600 problemas, de los cuales 500
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1962
		se encuentran en las bibliotecas de soporte. Lo que
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1963
		deseas saber es que estaba todo limpio antes que comenzara
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1964
	    el caos, y por lo tanto, esos problemas te corresponde a ti
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1965
		arreglarlos.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1966
	  </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1967
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1968
	  <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1969
		Este es uno de los problemas de Mozilla actualmente: 
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1970
		pierde memoria sin parar así que ¿cómo vas a saber si has 
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1971
	    contribuido al problema?
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1972
          </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1973
	</listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1974
      </itemizedlist>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1975
    </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1976
 
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1977
    <sect2 id="memory-advice">
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1978
      <title>Algunos consejos contra la pérdida de memoria.</title>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1979
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1980
      <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1981
        <itemizedlist>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1982
          <listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1983
	    <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1984
	      Usa «<symbol>const</symbol>» donde sea posible (para 
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1985
		  punteros obviamente).
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1986
        </para>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1987
	    <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1988
  	      Si un argumento es «<symbol>const</symbol>», entonces 
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1989
		  indudablemente la función llamada no liberará la memoria por 
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1990
		  ti.
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1991
        </para>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  1992
	    <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1993
		  Si el tipo de resultado de una función es 
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1994
		  «<symbol>const</symbol>», entonces
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1995
		  claramente no eres responsable por liberarlo. 
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1996
		  <emphasis>Probablemente</emphasis> lo será para un resultado
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1997
		  distinto de «<symbol>const</symbol>» (que no sea un entero 
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1998
		  o algo similar).
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  1999
        </para>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2000
	    <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2001
		  Fíjate en que, desafortunadamente, esto no funciona muy bien
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2002
		  con los objetos que cuentan referencias.  Funciona bien
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2003
		  con cadenas.
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2004
        </para>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2005
	    <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2006
		  Dado que C usa llamadas por valor, no tiene sentido
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2007
		  aplicar «<symbol>const</symbol>» a tipos 
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2008
		  <symbol>int</symbol>, <symbol>double</symbol> y similares.
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2009
         </para>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2010
	  </listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2011
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2012
	  <listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2013
	    <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2014
	      <emphasis>Documenta las responsabilidades.</emphasis>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2015
            </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2016
	    
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2017
	    <itemizedlist>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2018
	      <listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2019
		<para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2020
			 Si una función toma la propiedad de un objeto/referencia,
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2021
			 sé explícito acerca de ello.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2022
                </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2023
	      </listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2024
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2025
	      <listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2026
		<para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2027
			 Indica siempre si el que llama a la función debiera
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2028
			 liberar/desreferenciar los resultados.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2029
                </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2030
	      </listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2031
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2032
	      <listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2033
		<para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2034
		  Documenta <emphasis>cómo</emphasis> entregar la 
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2035
		  memoria: unref, free, g_free, ...
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2036
                </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2037
	      </listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2038
	    </itemizedlist>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2039
	  </listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2040
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2041
          <listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2042
	    <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2043
	      <emphasis>Se cuidadoso cuando uses copiar-y-pegar.</emphasis>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2044
            </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2045
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2046
	    <para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2047
			  El proceso de cortado y pegado no mejora el código, al 
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2048
			  contrario de lo que creen muchos programadores.  Primero,
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2049
			  mira el código y si intenta producir muchas copias, quizás
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2050
			  necesite una función ayudante o nexo. <!-- FIXME: mejor 
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2051
			  traducción de helper -->
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2052
            </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2053
	  </listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2054
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2055
          <listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2056
	    <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2057
	      <emphasis>Libera todo antes de salir.</emphasis>
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2058
        </para>
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2059
        <para>
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2060
		  Esto lleva tiempo, así que quizás debieras hacerlo 
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2061
		  sólo dentro de una condición.
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2062
        </para>  
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2063
	    <para>
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2064
		  El motivo de este consejo es que los verificadores de memoria
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2065
		  toman tiempo en determinar entre una pérdida que tu conoces 
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2066
		  y no te preocupan, y las otras pérdidas.
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2067
        </para>
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2068
	  </listitem>
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2069
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2070
	  <listitem>
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2071
	    <para>
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2072
	      <emphasis>No dejes punteros sueltos en tus estructuras de 
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2073
		  datos.</emphasis>
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2074
        </para>
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2075
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2076
	    <para>
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2077
		  Asigna <symbol>NULL</symbol> o 
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2078
		  <symbol>(void *)0xdeadbeef</symbol> para los miembros 
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2079
		  liberados a menos que vayas a liberar la estructura a la 
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2080
		  que pertenecen.
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2081
        </para>
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2082
	    
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2083
	    <para>
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2084
		  Los punteros sueltos tienen la mala tendencia a ocultar pérdidas
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2085
		  de memoria.
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2086
	    </para>
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2087
	  </listitem>
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2088
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2089
	  <listitem>
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2090
	    <para>
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2091
	      <emphasis>Ejecuta el nuevo código en un ciclo 1 millón de 
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2092
		  veces.</emphasis>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2093
            </para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2094
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2095
	    <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2096
		   Si pierdes memoria, lo sabrás &mdash; sólo sigue al proceso con
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2097
		   <command>top</command> en otra ventana.  Podrías querer
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2098
		   especificar a top el <symbol>PID</symbol>
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2099
		   del proceso con la opción <parameter>-p</parameter>.
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2100
            </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2101
	  </listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2102
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2103
	  <listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2104
	    <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2105
	      <emphasis>Repáralo ahora, no después.</emphasis>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2106
            </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2107
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2108
	    <para>
1
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2109
		  No escribas una porquería de código; más temprano que 
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2110
		  tarde te pesará.
52d161ada41e 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents: 0
diff changeset
  2111
        </para>
0
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2112
	  </listitem>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2113
	</itemizedlist>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2114
      </para>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2115
    </sect2>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2116
  </sect1>
7e52f5046fb6 2006-09-07 German Poo-Caaman~o <gpoo@ubiobio.cl>
"German Poo-Caaman~o <gpoo@ubiobio.cl>"
parents:
diff changeset
  2117
</article>