問題タブ [magic-numbers]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
language-agnostic - マジックナンバーとは何ですか? なぜ悪いのですか?
マジックナンバーとは?
なぜそれを避けるべきですか?
該当するケースはありますか?
database-design - データベース設計のルックアップ テーブル
現在、レガシーデータベースの設計を改善しようとしていますが、次のような状況があります
現在、LeadSource を格納するテーブル SalesLead があります。
リード ソースはテーブルに保存されているので便利です。
したがって、一方から他方への外部キーを作成し、正規化されていない列を削除したいだけです。
すべての標準的なもの、私は願っています。
これが私の問題です。私は書く代わりにその問題から逃れることができないようです
これは完全に明白であり、私は今書かなければなりません
また
LeadSource フィールドの内容を変更すると、これが壊れます。
私のアプリケーションでは、SalesLead の LeadSource の値を変更したいときはいつでも、1 から 2 に更新したくありません (たとえば)。開発者にこれらのマジック ナンバーを覚えさせたくないからです。ID は任意であり、そのままにしておく必要があります。
アプリのコードでそれらへの依存を削除または無効にするにはどうすればよいですか?
私のソリューションがサポートしなければならない言語を編集する
- .NET 2.0 + 3 (価値のある asp.net、vb.net、および c#)
- vba (アクセス)
- デシベル (MSSQL 2000)
2.0編集結合は問題ありませんが、リクエストに応じて「foo」が「foobar」に変更される可能性があり、クエリを実行したくありません。
windows - Windows Perl での EWOULDBLOCK と同等の errno
G'day Stackoverflowers,
私は、Perl のautodieプラグマの作成者です。このプラグマは、Perl のビルトインが失敗時に例外をスローするように変更します。これはFatalに似ていますが、レキシカル スコープ、拡張可能な例外モデル、よりインテリジェントなリターン チェック、およびはるかに優れたエラー メッセージを備えています。これは、Perl の将来のリリース (暫定的に 5.10.1+) でモジュールを置き換える予定Fatal
ですが、現在、Perl 5.8.0 以降の CPAN からダウンロードできます。
の次のリリースでは、(ノンブロッキング) オプションを使用したautodie
への呼び出しの特別な処理が追加されます。呼び出しが失敗すると、通常は例外が発生しますが、 usingの呼び出しが失敗すると、返された errno( ) が.flock
LOCK_NB
flock
autodie
flock
LOCK_NB
$!
EWOULDBLOCK
これは、人々が次のようなコードを書き続けることができるようにするためです。
上記のコードでは、他の誰かが既にファイルをロックしているために失敗したロック ( EWOULDBLOCK
) は、ハード エラーとは見なされないため、autodyingflock
は単に false 値を返します。ファイルロックをサポートしていないファイルシステムで作業している場合、またはネットワークファイルシステムとネットワークが停止したばかりの場合、エラー番号flock
がEWOULDBLOCK
.
これは、Unix フレーバー システムの私の開発バージョンでは問題なく動作しますが、Windows ではひどく失敗します。Windows の Perl はこのLOCK_NB
オプションをサポートしていますが、定義していないようEWOULDBLOCK
です。代わりに、ブロッキングが発生した場合に返される errno は 33 (「ドメイン エラー」) です。
明らかに、これを定数として にハードコーディングできますautodie
が、それはここでやりたいことではありません。私はそれを Windows の に相当するものと比較したいとPOSIX::EWOULDBLOCK
思っていますが、そのようなものがどこで定義されるかを見つけることはできません。お手伝いできることがあれば、お知らせください。
特に望まない回答:
- 定数としてハードコーディングすることを提案します (または、さらに悪いことに、マジック ナンバーを浮かび上がらせたままにします)。
LOCK_NB
Windows では機能をまったくサポートしていません。LOCK_NB
への呼び出しからの失敗は、flock
単に false を返す必要があると仮定します。- p5p またはperlmonksで私が尋ねる提案。私はすでにそれらについて知っています。
flock
、または例外、または機能の説明Fatal
。もう知っている。親密に。
perl - Perl を使用してファイルのサイズをメガバイト単位で取得するにはどうすればよいですか?
ディスク上のファイルのサイズをメガバイト単位で取得したい。演算子を使用する-s
とサイズがバイト単位でわかりますが、これをマジック ナンバーで割るのは悪い考えだと思います。
読み取り専用変数を使用して 1024 を定義する必要がありますか、それともキロバイト単位のバイト数をプログラムで取得する方法はありますか?
編集:誤った計算を更新しました。
xml - XMLノード名(ハードコードされた値)をどうするか?
私は最近xmlを使っています。そして、ちょっとした現象に気づきました(世界の他の地域にとってはそれほど大きな問題ではないかもしれませんが、私にとってはそうでした)。たぶん、それは私が初心者であるということです。しかし、ほとんどのハードコーディングされた番号やマジックナンバーを構成ファイルに分割するべきではありませんか?例えば、
xmlドキュメントは次のとおりです。
「コード」または「メッセージ」をハードコーディングせずに、これをどのように解析しますか?
javascript - JavaScript で event.keyCode を照合するときにマジック ナンバーを回避する方法
Javascript でキープレスを照合するときにマジック ナンバーを回避できますか?
例としては、13 を使用してエンター キーに一致させます。
独自の定数を指定できますが、これらの値がさまざまなプラットフォーム/ブラウザー/ロケールで十分に安定しているかどうかはわかりません。
blackberry - BlackBerry - GZip 解凍の問題
RIM 圧縮 APIの使用中に奇妙な問題が発生しました。ドキュメントに記載されているように機能させることができません。win gzipツール
を使用してプレーンテキストファイルをgzipし、gzをblackberryプロジェクトのリソースに追加し、アプリで解凍しようとすると、無限ループが発生し、gzis.read()が-1を返さない...
圧縮されたコンテンツの後に、gzis.read() で 65535 値の繰り返しがあります。私が見つけた唯一の回避策は愚かです
しかし、私はその理由、私が間違っていること、そしてなぜ65535なのか知りたいです。
magic-numbers - 23,148,855,308,184,500はマジックナンバーですか、それともまったくのチャンスですか?
このようなニュースレポートは、上記の数がプログラミングのバグとして発生した可能性があることを示しています。
米国の男性が地元のガソリンスタンドに飛び出してタバコのパックを購入しましたが、彼のカードには23,148,855,308,184,500ドルが請求されていました。
これは23兆ドル(14兆ポンド)であり、米国の国家債務の何倍にもなります。*
16進数では、$ 523DC2E199EBB4ですが、一見するとそれほど面白くはありません。
どのプログラミングエラーがこれを引き起こしたのかについて誰かが考えていますか?