In computer programming, the term magic number has multiple meanings. It could refer to one or more of the following:

Property Value
dbo:abstract
  • Un número mágico en informática se refiere a unos caracteres alfanuméricos que de manera codificada identifican un archivo, generalmente ubicados al comenzar dicho archivo. Su uso está extendido en entornos asociados con Unix y sus derivados, como método alternativo de identificación. Consiste en registrar un "número mágico" dentro de un archivo para así poder identificar su tipo. En un principio, se registraban 2-bytes identificadores al principio del archivo, pero puesto que cualquier secuencia binaria no decodificada puede ser considerada como un número, cualquier carácterística de un formato de archivo que lo distinguiese podría ser utilizada para identificarlo. Las imágenes GIF, por ejemplo, siempre empiezan con la representación en ASCII de GIF87a o GIF89a, dependiendo del estándar al que pertenezcan. Otros muchos formatos de archivo, en especial los de texto plano, son más difíciles de identificar por este método. Por ejemplo, los archivos HTML, pueden empezar por la cadena (que no se diferencia entre mayúsculas y minúsculas), o para determinados tipos de documentos se emplea la etiqueta , y para los XHTML, el identificador XML empieza con . En definitiva, los archivos pueden empezar con cualquier texto aleatorio o incluso líneas vacías, pero seguirían siendo HTML. Este enfoque ofrece mejores garantías para que el archivo sea identificado correctamente, y en ocasiones puede determinar información muy precisa sobre el archivo. Aun así, es sólo útil si la interfaz empleada para acceder al archivo permite al usuario la manipulación sencilla con una variedad de métodos —como oposición al doble clic que automáticamente hace lo "correcto"; ya que suele estar asociado con interfaz de línea de comandos y no con las gráficas. Puesto que el cálculo del "número mágico" puede ser bastante complejo, y habría que analizar cada archivo cada vez para cada una de las posibilidades de "archivo mágico", este enfoque es también bastante ineficiente, especialmente si se listan varios archivos (por el contrario, el método del nombre de archivo y métodos basados en metadatos sólo necesitan contrastar un fragmento de datos con un índice ordenado). Y, como con el ejemplo de HTML, algunos tipos de archivos no pueden ser identificados con este método. Aun así, es el mejor método por el cual un programa puede comprobar si un archivo puede ser procesado por él de forma correcta: aún pudiendo ser, el nombre o los metadatos, alterados independientemente de su contenido, pudiendo ser comprobado con un análisis de número mágico bien diseñado que compruebe corrupciones o tipos de archivos incorrectos. También, por connotación, como caso especial de números mágicos se refiere a las líneas de shebang en programación de scripts. Pero en este caso, los números mágicos son textos legibles normalmente que especifican a un intérprete de órdenes como trabajar con un archivo. (es)
  • In computer programming, the term magic number has multiple meanings. It could refer to one or more of the following: (en)
  • Eine Magische Zahl (englisch magic number) hat in der Programmierung drei Bedeutungen: (de)
  • Un magic number, in informatica, identifica una stringa di testo, utilizzata con differenti finalità. (it)
  • En programmation informatique, le terme magic number (en français « nombre magique ») peut désigner : (fr)
  • プログラムにおけるマジックナンバー(魔法数字)とは、何らかの識別子として用いられるプログラム中に書かれた具体的な数値である。そのプログラムを書いた時点では製作者は数値の意図を把握しているが、他のプログラマーまたは製作者本人がマジックナンバーの意図を忘れたとき閲覧すると「この数字の意味はわからないが、とにかくプログラムは正しく動く。まるで魔法の数字だ」という皮肉を含む。 (ja)
  • Número mágico : um termo usado em informática para designar constantes especiais usadas para definir um certo propósito, usualmente escolhidas de forma arbitrária. Eles são chamados de mágicos pois a sua presença é inexplicável sem um conhecimento prévio do seu uso, seja informal com o criador da constante ou formal através de documentação. (pt)
  • Понятие «Магическое число» в программировании имеет два значения: Сигнатура данных Плохая практика программирования (ru)
  • 程式設計中所謂的魔術數字(magic number)是指直接寫在程式碼裡的具體數值(如「10」「123」等以數字直接寫出的值)。雖然程式作者寫的時候自己能了解數值的意義,但對其他程式員而言,甚至製作者本人經過一段時間後,會難以了解這個數值的用途,只能苦笑諷刺「這個數值的意義雖然不懂,不過至少程式能夠執行,真是個魔術般的數字」而得名。因為下述理由,一般認為程式碼中不應該含有魔術數字。數值的意義難以了解數值需要變動時,可能要改不只一個地方例1:price_tax = 1.05 * price例1是對輸入的價格(price)計算含稅(price_tax)售價的程式。但稅率並不是萬年不變,當政府調整稅率時,會有修改程式的必要。這裡「1.05」就是一種魔術數字,「為什麼是1.05」會讓人無法馬上了解。下面是去掉魔術數字的範例,程式容易了解也容易修正。例1 (修正):TAX = 0.05price_tax = (1.0 + TAX) * price例2:setColor("text", 0xffffff)例2是設定以白色顯示程式碼。然而十六進位的色碼0xffffff很難直覺看懂是「白色」,故也算是一種魔術數字。下面是一種拿掉魔術數字的方式。例2 (修正):white = 0xffffffsetColor("text", white)像這樣,將魔術數字置換成常數或列舉型別是經常用來解決魔術數字問題的手段。由於常數可以賦予易懂的名稱,可使幫助閱讀者了解數值的意義。當然,在程式初始化部分定義的常數列表不稱為魔術數字。例3:year = (new Date()).getYear() - 1911;例3是用來取得今年之中華民國紀年的程式碼。然而將「1911」寫死在程式碼裡並不盡理想,例如程式不易在其他國家使用等。下面是一種拿掉魔術數字的方式。function getRepublicofChinaYear() { return (new Date()).getYear() - 1911; }year = getRepublicofChinaYear();這個範例則使用函式來包裝整段計算中華民國紀年的邏輯,函式內則直接保留數值1911。這樣做的好處是在程式中可藉由getRepublicofChinaYear()這個函式名稱更容易了解程式意圖,並對未來若需支援其他國家時保留彈性。例如,需要使用日本曆時,可只抽換函式部分而不動到程式所有參考年份運算的地方。另外,在 一些程式語言中,1與0經常直接作為「真」、「假」的意義(布林值)使用,有時候也不被認為是魔術數字。(但近年的語言多半建議使用true與false替代。) (zh)
dbo:wikiPageID
  • 352996 (xsd:integer)
dbo:wikiPageRevisionID
  • 699159984 (xsd:integer)
dct:subject
rdf:type
rdfs:comment
  • In computer programming, the term magic number has multiple meanings. It could refer to one or more of the following: (en)
  • Eine Magische Zahl (englisch magic number) hat in der Programmierung drei Bedeutungen: (de)
  • Un magic number, in informatica, identifica una stringa di testo, utilizzata con differenti finalità. (it)
  • En programmation informatique, le terme magic number (en français « nombre magique ») peut désigner : (fr)
  • プログラムにおけるマジックナンバー(魔法数字)とは、何らかの識別子として用いられるプログラム中に書かれた具体的な数値である。そのプログラムを書いた時点では製作者は数値の意図を把握しているが、他のプログラマーまたは製作者本人がマジックナンバーの意図を忘れたとき閲覧すると「この数字の意味はわからないが、とにかくプログラムは正しく動く。まるで魔法の数字だ」という皮肉を含む。 (ja)
  • Número mágico : um termo usado em informática para designar constantes especiais usadas para definir um certo propósito, usualmente escolhidas de forma arbitrária. Eles são chamados de mágicos pois a sua presença é inexplicável sem um conhecimento prévio do seu uso, seja informal com o criador da constante ou formal através de documentação. (pt)
  • Понятие «Магическое число» в программировании имеет два значения: Сигнатура данных Плохая практика программирования (ru)
  • 程式設計中所謂的魔術數字(magic number)是指直接寫在程式碼裡的具體數值(如「10」「123」等以數字直接寫出的值)。雖然程式作者寫的時候自己能了解數值的意義,但對其他程式員而言,甚至製作者本人經過一段時間後,會難以了解這個數值的用途,只能苦笑諷刺「這個數值的意義雖然不懂,不過至少程式能夠執行,真是個魔術般的數字」而得名。因為下述理由,一般認為程式碼中不應該含有魔術數字。數值的意義難以了解數值需要變動時,可能要改不只一個地方例1:price_tax = 1.05 * price例1是對輸入的價格(price)計算含稅(price_tax)售價的程式。但稅率並不是萬年不變,當政府調整稅率時,會有修改程式的必要。這裡「1.05」就是一種魔術數字,「為什麼是1.05」會讓人無法馬上了解。下面是去掉魔術數字的範例,程式容易了解也容易修正。例1 (修正):TAX = 0.05price_tax = (1.0 + TAX) * price例2:setColor("text", 0xffffff)例2是設定以白色顯示程式碼。然而十六進位的色碼0xffffff很難直覺看懂是「白色」,故也算是一種魔術數字。下面是一種拿掉魔術數字的方式。例2 (修正):white = 0xffffffsetColor("text", white)像這樣,將魔術數字置換成常數或列舉型別是經常用來解決魔術數字問題的手段。由於常數可以賦予易懂的名稱,可使幫助閱讀者了解數值的意義。當然,在程式初始化部分定義的常數列表不稱為魔術數字。例3:year = (new Date()).getYear() - 1911;例3是用來取得今年之中華民國紀年的程式碼。然而將「1911」寫死在程式碼裡並不盡理想,例如程式不易在其他國家使用等。下面是一種拿掉魔術數字的方式。function getRepublicofChinaYear() { return (new Date()).getYear() - 1911; }year = getRepublicofChinaYear();這個範例則使用函式來包裝整段計算中華民國紀年的邏輯,函式內則直接保留數值1911。這樣做的好處是在程式中可藉由getRepublicofChinaYear()這個函式名稱更容易了解程式意圖,並對未來若需支援其他國家時保留彈性。例如,需要使用日本曆時,可只抽換函式部分而不動到程式所有參考年份運算的地方。另外,在 一些程式語言中,1與0經常直接作為「真」、「假」的意義(布林值)使用,有時候也不被認為是魔術數字。(但近年的語言多半建議使用true與false替代。) (zh)
  • Un número mágico en informática se refiere a unos caracteres alfanuméricos que de manera codificada identifican un archivo, generalmente ubicados al comenzar dicho archivo. Su uso está extendido en entornos asociados con Unix y sus derivados, como método alternativo de identificación.También, por connotación, como caso especial de números mágicos se refiere a las líneas de shebang en programación de scripts. Pero en este caso, los números mágicos son textos legibles normalmente que especifican a un intérprete de órdenes como trabajar con un archivo. (es)
rdfs:label
  • Magic number (programming) (en)
  • Magische Zahl (Informatik) (de)
  • Número mágico (informática) (es)
  • Magic number (it)
  • Nombre magique (programmation) (fr)
  • マジックナンバー (プログラム) (ja)
  • Número mágico (informática) (pt)
  • Магическое число (программирование) (ru)
  • 魔術數字 (程式設計) (zh)
rdfs:seeAlso
owl:sameAs
prov:wasDerivedFrom
foaf:isPrimaryTopicOf
is dbo:wikiPageDisambiguates of
is dbo:wikiPageRedirects of
is rdfs:seeAlso of
is owl:differentFrom of
is foaf:primaryTopic of