0

私は "Java の世界" から "PL/SQL の世界" にやってきて、"レガシー" ストアド プロシージャを使用しているほぼ初心者ですが、質問があります。Java 命名のベスト プラクティスには、「変数、メソッド、クラスなどの名前は意味があり、自動的に文書化されるべきである」などのヒントが含まれています (Clean Coder の本を読みました)。デフォルトでは、Oracle の識別子の長さは 30 文字ですが、省略された命名は必ずしも「翻訳しやすい」とは限らず、それがアプリのパフォーマンスを考慮して行われているのか、それとも「単なる悪い習慣」なのかはわかりません。

次のようなものを見つけたとします。

PROCEDURE PROCCALCTAXES(vVarNamTax VARCHAR2(2)) IS 
   vVarNamCouCalTax VARCHAR2(20);
   nVarCouId NUMBER;
   vVarNamTax VARCHAR2(20);
   vVarValTax VARCHAR2(10);
   nVarCouTaxTimPaid NUMBER;
   vVarExa30Cha VARCHAR2(10);
BEGIN
   --business logic
END PROCDOSTH;

そのコードを次のようにリファクタリングすると、何か気を付けなければならないことがありますか?

PROCEDURE P_CALCULATE_TAXES(vVarNamTax VARCHAR2(2)) IS 
   vCountryName VARCHAR2(20);
   nCountryId NUMBER;
   vTaxName VARCHAR2(20);
   vTaxValue VARCHAR2(10);
   nCountOfTimesPaid NUMBER;
   vAnExampleWith30CharactersLong VARCHAR2(10);
BEGIN
   --business logic
END P_CALCULATE_TAXES;

アプリのパフォーマンスが低下していますか? すべての変数が最後の変数のようになり、30 文字になるとしたら? 関数/プロシージャ/トリガー/その他の名前がパフォーマンスに影響するのはいつですか? これには基準がありますか?

ありがとう!

4

3 に答える 3

4

名前をより読みやすく、意味があり、自動的に文書化されるようにする必要があります。少なくともパフォーマンスの観点から、よりわかりやすい名前が不利になる言語を見つけるのは難しいでしょう (おそらく、長さの制約のために一部の codegolf 固有の言語で)。Sql と PL/Sql に違いはありません。名前はパフォーマンスには影響しません。

ただし、30 文字の制限があります。複数の開発者がいる組織にいる場合は、パラメーター名、変数名、グローバル、ビュー、トリガー、プロシージャ、パッケージなどのあらゆる種類のプレフィックス/サフィックスの標準を採用することを検討する必要があります。 .

http://www.toadworld.com/platforms/oracle/w/wiki/8245.plsql-standards.aspxにアクセスして、さまざまな人々が採用した標準の例を確認してください。何かが正しいか、何かが間違っているかという厳密なルールはありません。しかし、コードの可読性と保守性を確実に改善し、将来のコードをより速く書くのに役立つ特定の標準があります。

PROCCALCTAXESあなたの例については、名前を orのように読みやすいものに変更することをお勧めしますorでCALCULATE_TAXESプロシージャをプレフィックスする標準を採用した場合、それはあなた次第ですが、私の意見では冗長であり、貴重な不動産を占有します30 文字のスペース。P_PRC_

もう 1 つ役立つと思ったのは、当社に適用される標準的な略語のリストを作成することです。組織の ORG、住所の ADDR、顧客の CUST など。30 文字の制限に単語を収めるのに役立ちます。

于 2015-03-13T16:03:28.900 に答える
2

変数名はパフォーマンスに影響しません。

言語に関係なく、変数名は明確で自己文書化されている必要があります。ただし、PL/SQL 変数名が 30 文字に制限されていることを考えると、物事を明確にして自己文書化するには、ある種の一貫した省略形が必要になる場合があります。たとえば、さまざまな変数が多数あることがわかっている場合

order_id
order_line_id
order_line_amount
order_total_amount
order_sales_tax_rate
order_sales_tax_amount
order_sales_tax_taxing_entity_name
order_sales_tax_taxing_entity_fips_code

一部の変数が 30 文字を超える場合、30 文字を超える変数のみを短縮するのではなく、すべての変数を一貫して短縮することが理にかなっていることがよくあります。この場合、すべての変数が 30 文字未満になるように、一貫して「order」を「ordr」、「sales_tax」を「stax」、「taxing_entity」を「txety」と省略したいと思うかもしれません。開発者にこれらの略語を知ってもらう (そして一貫してそれらに固執する) ことを強制すると、コードの可読性が低下しますが、ある変数では "sales_tax" を省略して別の変数では省略していないかどうかを開発者に理解させるよりも、おそらく影響は少ないでしょう。

于 2015-03-13T16:13:29.980 に答える
0

私の意見では、" PROC CALCTAXES" や " vVar NamTax" のような名前を使用して、それらがプロシージャまたは varchar 変数であることを示すことは意味がありません。ほとんどのエディターまたは IDE は、デフォルトでこのような情報を表示します。文字を使用して、より読みやすい名前を付けます。

于 2015-03-13T17:35:13.433 に答える