問題タブ [code-maintainability]
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.
javascript - Microsoft Reporting Services を使用する場合
最近は Microsoft Reporting Service のトレーニングを受けています。良いツールですが、それを使用すると役立つ例が見つかりません。私にとっては、JavaScript コントロールと組み合わせて C# コードを使用してレポートを実装する方が常に優れています。C# と JavaScript を使用すると、より多くの作業が必要になるかもしれませんが、その一方で、保守性と自動テストが向上します。レポート サービスを使用することが最善の選択となる状況はありますか?
puppet - Hiera ルックアップはモジュールで実行できますか?
3 つのプロパティ ファイルに依存する Java で実装されたサービスがあります。共通プロパティ モジュール内のプロパティ ファイルごとに「定義」を定義し、サービス固有のモジュールからそれらを使用しています。プロパティ ファイルの 1 つの「定義」を以下に示します。
パペット コードで役割とプロファイル パターンに従っており、サービス固有のプロファイルですべての hiera ルックアップを実行しています。このため、プロパティ ファイルが変更されるたびに、そのプロパティ ファイルを使用するすべての puppet モジュールにカスケード変更を加える必要があります。変更は、プロファイル (hiera ルックアップ)、モジュール init.pp (コンストラクターからのパラメーターの追加/削除)、および config.pp (プロパティ ファイルの「define」を呼び出すときのパラメーター調整) で必要です。
上記の問題は、次のように、プロパティ ファイルの「定義」に hiera ルックアップを組み込むことで解決できると思います。
ただし、上記はロールとプロファイル パターンの違反です。上記は、プロファイルで行うのではなく、モジュールで hiera ルックアップを行っています。現在、モジュールは hiera に密接に依存しています。これは内部モジュール (puppet forge 向けではない) であるため、コードの保守性を優先してガイドラインに違反しても問題ないと思います。
上記について他の方の意見を求めます。
c++ - (回避) C++ でコードを .cpp と .h に分割し、効率的にコンパイルする
C++ での一般的な方法は、.h
(または.hpp
) 内の宣言と 内の実装を分離すること.cpp
です。
主な理由は 2 つあります (他にもあるかもしれません)。
- コンパイル速度 (1 つのファイルだけを変更する場合、すべてを再コンパイルする必要はありません。
make
事前にコンパイルされた.o
ファイルからリンクすることができます) - 前方宣言が必要になる場合があります (
class A
依存のclass B
実装とclass B
onの実装の場合class A
) ... しかし、私はこの問題を頻繁に抱えているわけではなく、通常は解決できます。
オブジェクト指向プログラミングの場合、次のようになります。
QuadraticFunction.h
:
QuadraticFunction.cpp
:
main.cpp
:
makefile
次に、次のようにコンパイルします。
しかし、私はしばしば非常に不便だと思います
特に、コードを大幅に変更する場合 (たとえば、開発の初期段階で、プロジェクト全体の全体的な構造についてまだ確信が持てない場合)。
- クラス構造に大幅な変更を加える場合、コードの一部との間
.cpp
を常に行き来する必要があります。.h
- エディターとプロジェクト フォルダーに 2 倍のファイルがあり、混乱しています。
- いくつかの情報 (関数ヘッダーや など
QuadraticFunc::
) を 2 回記述する必要があり、多くのタイプミスや不一致が発生する可能性があるため、コンパイラは常に文句を言います (私はそのような間違いを頻繁に行います)。 - 編集しなければならないクラスを追加/削除/名前変更するたびに
Makefile
、コンパイラ出力から追跡するのが難しい他の多くの間違いを犯します (たとえば、コードがすべての依存関係を再コンパイルするように Makefile を書くのを忘れることがよくあります)。編集 )
この観点から、私は Java の仕組みがより好きです。このため、すべてのコード (実装を含む) を に入れるだけで C++ プログラムを作成していました.h
。このような:
次のようなユニバーサルデフォルトメイクファイルを使用します。
(main.cpp
同じままです)
しかし、より複雑なプログラムを書き始めると、常にすべてを再コンパイルする必要があるため、コンパイル時間が非常に長くなり始めます。
make
(コンパイル時間の高速化)の利点を利用し、プログラム構造をJavaのような方法で整理.h
する方法はありますか(別のandではなくクラス本体のすべて.cpp
)、はるかに便利ですか?
magento - 邪魔にならない設計変更を Magento 1.X に適用するにはどうすればよいですか
ここで Magento のインストールに少し問題があります。これは、テーマにかなり重いカスタマイズを行った会社から「継承」しました。
私はほとんどの変更を合理化しようとしましたが、かなり成功しました。問題は、変更が 1 行しかないテンプレート ファイルがいくつかあることです。
たとえば、この特定のケースで<button>
は、<a>
リンクになっている になります。これは、300 行のテンプレート ファイルの 1 行にすぎません。
拡張機能のレイアウト ファイルでも同様の問題が発生しました。たとえば、レイアウト全体をリセットする汚れた行が 1 つあります。次に、デザイン内の完全なレイアウト XML ファイルを上書きする必要があります。これらのレイアウト ファイルは上書きされるかどうかに関係なく、1 行を少し変更するだけです。関連するマージプロセスはありません。
Magento の設計者のドキュメントを調べましたが、有用なものは見つかりませんでした。デザインの「local.xml」で特定のレイアウト変更を行うことができることはわかっていますが、それらは多かれ少なかれ「コンテキストレス」であり、それらの変更が特定の拡張子に属している場合、それほど大きくはありません。
前半で述べたようなテンプレートの小さな変更、または部分的にレイアウト ファイルのオーバーライドを適用する方法を知っていますか?
私の主な目標は、ファイルを自動的に更新できるようにすることです。これは、モジュールをダウンロードし、ファイルを置き換えて、完了することを意味します。上書きされたファイルを手動で更新する必要はありません。
python - range と xrange の Python ライブラリの互換性
次のタイプのコードを頻繁に使用するPythonライブラリがあります
これで、より大きな値の場合、範囲がモンスターになることがわかりました。
したがって、範囲の代わりに xrange を使用したいのですが、同時に、「範囲」という単語をライブラリ内の他のものに置き換えたくなく、Python 2.7 および 3.x と互換性を持たせたいと考えています。
これは現在の実装です:
今、私は2つの質問があります。
- 上記の実装は完璧ですか (コードは汎用目的ではなく、他の共同作業者によって維持されるライブラリ用であることに注意してください)。そうでない場合は、その方法を提案してください(他のモジュールを使用せずに)
- コード構造を提案してください(上記のコードを保持し、必要に応じてインポートする必要があるファイル/ディレクトリ名)
ありがとう。