問題タブ [rationale]

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.

0 投票する
2 に答える
2618 参照

cakephp - なぜ CakePHP は異なる複数形/単数形の命名規則を使用するのですか?

誰かがおそらくここで説明できますか? CakePHP には、db テーブルとコントローラーには複数名を使用し、モデルには単数名を使用するという規則があるのはなぜですか? 常に単数形や複数形を使用しないのはなぜですか? 私にとって、「ここで複数形と単数形のどちらを使用するべきか?」と常に考えなければならないのは混乱しているように思えます。(または、覚える簡単な方法はありますか??) そして、両方の組み合わせを使用する結合テーブルがあります!

どこかに正当な理由があると思いますが、それを見つけられませんでした。
(Ruby-on-Rails がそのように動作するという理由だけではないことを願っています。)

サイモン。

0 投票する
3 に答える
1184 参照

python - Python 変数スコープ

私は自分のpythonを教えていて、いくつかのサンプルコードをこれに翻訳していました

これは、ほとんど私の意図したクラス定義です

メイン メソッドの後半で、インスタンスを作成して呼び出しますa

aそれが、で宣言された変数がmainメソッドで使用可能であることを確認する方法average であり、そのメソッドを機能させるには、 self.a + self.b + self.c代わりに入力する必要があります

これの根拠は何ですか?

関連する質問を見つけましたが、それらがほぼ同じかどうかはよくわかりません

0 投票する
5 に答える
6592 参照

c++ - 複数行のconstexpr関数を持つのはなぜ形式が悪いのですか?

Generalized Constant Expressions—Revision 5によると、以下は違法です。

これは、すべての 'constexpr' 関数が の形式である必要があるため{ return expression; }です。これがそうである必要がある理由はわかりません。

私の考えでは、本当に必要な唯一のことは、外部状態情報が読み書きされず、渡されるパラメーターも「constexpr」ステートメントであることです。これは、同じパラメーターを使用して関数を呼び出しても同じ結果が返されることを意味するため、コンパイル時に「知る」ことができます。

これに関する私の主な問題は、ループの実際のラウンドアバウト形式を強制し、コンパイラがそれを最適化して、非 constexpr 呼び出しと同じくらい高速になることを望んでいるように見えることです。

constexpr上記の例に有効なコードを記述するには、次のようにします。

しかし、これは理解するのがはるかに難しく、 の要件に違反するパラメーターを使用して呼び出すときに、コンパイラーが末尾再帰を処理することを期待する必要がありますconst-expr

0 投票する
5 に答える
8627 参照

c++ - C++ でネストされた名前空間宣言が許可されない特定の理由はありますか?

標準では、次のようなコードは許可されていません。

代わりに

根拠は何ですか?これは単にその時点では考えられていなかったのでしょうか、それとも含まれていない特別な理由があるのでしょうか?

最初の構文は、宣言が後のコードでの名前空間の実際の使用を模倣しているため、名前空間がどの名前空間にあると想定されているかをより直接的に表現しているようです。また、不幸にも「ばかげた」ブラケット カウント インデント ツールを使用している場合、インデントが少なくなります。

0 投票する
1 に答える
1255 参照

c++ - C ++ 0xスマートポインターの比較:一貫性がない、理由は何ですか?

C ++ 0x(n3126)では、スマートポインターを、関係的にも同等性についても比較できます。しかし、これが行われる方法は私には一貫していないようです。

たとえば、shared_ptrdefineはoperator<次と同等です。

を使用std::lessすると、指定されていないバニラリレーショナルポインタ比較とは異なり、ポインタ値に関する全順序付けが提供されます。

ただし、unique_ptr次と同じ演算子を定義します。

また、同様の方法で他の関係演算子を定義しました。


なぜ方法と「完全性」の変更?つまり、ビルトインを使用しながら使用するのshared_ptrstd::lessなぜですか?そして、なぜ他の関係演算子も提供しないのですか?unique_ptroperator<shared_ptrunique_ptr

私はどちらの選択の背後にある理論的根拠を理解することができます:

  • メソッドに関して:これはポインターを表すため、組み込みのポインター演算子を使用するだけですが、連想コンテナー内で使用できる必要があるため、全順序付けを提供します(バニラポインターがデフォルトのstd::less述語テンプレート引数で取得されるように)
  • 完全性に関して:それはポインターを表すので、ポインターとすべて同じ比較を提供しますが、それはクラスタイプであり、連想コンテナーで使用されるのに匹敵するよりも少ない必要があるだけなので、その要件のみを提供します

しかし、スマートポインタの種類によって選択が変わる理由はわかりません。私は何が欠けていますか?


ボーナス/関連:std::shared_ptrから続いているようboost::shared_ptrで、後者は「設計上」他の関係演算子を省略してstd::shared_ptrいます(同様に)。どうしてこれなの?

0 投票する
1 に答える
358 参照

java - XMLをチャンクしてリレーショナルテーブルにロードする

私は信用組合で働いています(約60Kのアカウント)。ステートメントプロセスは70年代のものであり、データをレイアウトに緊密に結合しました。つまり、ジョブを実行すると、各アカウントのステートメントを含むテキストファイルが生成されます。メインフレームの構成を変更しましたが、テキストを出力する代わりに、次のようなXMLを取得します。

リレーショナルテーブルからデータをプルし、iTextを使用してその場でPDFを作成するJavaコードを作成しました。ステートメントに表示されるデータの一部は、XMLのデータから計算されます。たとえば、XMLには共有上のすべてのトランザクションが含まれています。明細書には、貸方の数と借方の数を示したいと思います。DBに読み込まれると、ビューを使用してこれらの値をその場で計算し、データをJavaアプリに提供できます。

このXMLファイルは最大900MBであり、メンバーを追加するにつれて大きくなります。

xmlを一度に1つの「ステートメント」で処理したいと思います。 http://mrico.eu/entry/parsing_chunks_of_xml_documents

JAXBは大きなXMLファイルをチャンクで解析できますか

個別のステートメントを作成したら、そのシェア(小切手、普通預金、ビザなど)を対応するDBテーブルにロードします。

これを実現する最も簡単な方法は、ステートメントをPOJOにバインドしてから、POJOの複雑な要素(共有、トランザクション、またはローン)ごとに挿入を実行することです。

パーサー/バインダー/永続化ツールのどの組み合わせをお勧めしますか?

個人的には、生のJDBCインサートを好むので、パーサーとバインダーの問題がより重要です。

注:XMLのスキーマを作成することもできますが、メインフレームがXMLファイルを作成する方法が原因で壊れやすい可能性があります。FiservのSpectrumソフトウェアを使用している人は誰でも、私の痛みを感じます。

0 投票する
6 に答える
15978 参照

.net - DBNullのポイントは何ですか?

.NETにはnull、オブジェクト参照が空であることを示すためにどこでも使用される参照があります。次に、DBNullデータベースドライバー(および他のいくつか)によって使用される参照があります...ほとんど同じことを示します。当然、これは多くの混乱を引き起こし、変換ルーチンを解き放つ必要があります。

では、なぜ元の.NET作成者がこれを作成することにしたのでしょうか。私にはそれは意味がありません。彼らのドキュメントも意味がありません:

DBNullクラスは、存在しない値を表します。たとえば、データベースでは、テーブルの行の列にデータがまったく含まれていない場合があります。つまり、列は単に値を持たないのではなく、まったく存在しないと見なされます。DBNullオブジェクトは、存在しない列を表します。さらに、COM相互運用機能はDBNullクラスを使用して、存在しない値を示すVT_NULLバリアントと、指定されていない値を示すVT_EMPTYバリアントを区別します。

「列が存在しない」についてのこのがらくたは何ですか?列が存在しますが、特定の行の値がありません。存在しなかった場合、DBNull!ではなく、特定のセルにアクセスしようとすると例外が発生します。VT_NULLとを区別する必要があることは理解できますが、代わりにクラスをVT_EMPTY作成してみませんか?COMEmptyこれは、.NETFramework全体に非常にうまく適合します。

私は何かが足りないのですか?なぜDBNull発明されたのか、それがどのような問題を解決するのに役立つのか、誰かが光を当てることができますか?

0 投票する
2 に答える
1101 参照

c++ - Koenig ルックアップの根拠

Koenigルックアップの理論的根拠は何ですか?

コードを読みにくくし、より不安定にする何かのように考えることは避けられません。

特定のケース (つまり、非メンバー演算子) または明示的に必要な場合にのみ機能するように、Koenig ルックアップを定義できませんでしたか?

0 投票する
5 に答える
667 参照

c++ - What exactly was the rationale behind introducing references in c++?

From the discussion that has happened in my recent question (Why is a c++ reference considered safer than a pointer?), it raises another question in my mind: What exactly was the rationale behind introducing references in c++?

0 投票する
5 に答える
2438 参照

c++ - C ++:ルールを隠すことの背後にある理論的根拠

C ++の非表示ルールの背後にある理論的根拠は何ですか?

  • それが意味のある機能であれば、同じ名前の新しい関数を定義せずに関数を非表示にすることも可能であると思います。次のようなものです。

    しかし、これは不可能です。

  • ディレクティブを明示的に使用する場合、コンパイラはとにかく関数を再表示できなければならないため、コンパイラの作業が単純化されるとは思いません。using

    /li>

では、なぜ隠蔽ルールがあるのでしょうか。


ふむ、3つの答えはすべて良いようで、隠蔽ルールのさまざまな根拠を示しています。どの答えを受け入れるべきかわかりません。