間違った名前の非変数

brainFuckProgrammImage それはすべて約8年前に始まりました。 その後、数学計算用のプログラムを1つ作成しましたが、先生は変数に間違った名前を付けることを示しました。 彼は正しかった:x、xx、xxxはコードで区別するのが難しい。 名前を変更すると、それらはredSegment、greenSegment、blueSegmentに変わりました(タスクのコンテキストでは、命名は適切でした)。 それから、ファウラーのリファクタリング、マッコネルの完璧なコード、4人のギャングのデザインパターンがありました...私は毎日深byに沈みました。



私の現在の会社では、変数の適切な命名について誰も言及していませんが、これは深刻なことではありません。 nUnitのTestCase属性を使用する価値があるかどうか、テストの命名スタイルについて同僚と話し合い、C#の#regionの適切性について議論し、プロジェクト用のカスタムアナライザーを作成し、 スムージーを一般的に飲み 、あらゆる方法で人生を楽しみます。



問題の認識は、1人の候補者のテスト割り当てから始まりました(出版物のすべてのコードが変更され、NDA)。



foreach (Dot d in dots) { WriteToOutput(dX, dY); }
      
      





誰も変数dに本当に注意を払っていません。 インタビュー、時間、神経、みんながそれを通り抜けました。



数時間後、SQLスクリプトのコードに出会いました



 select u.* from Users u
      
      





数分後、隣の台本で作品が見つかりました



 select u.UserName, b.Locked, d.PropertyValueStrings from Users u join Bindings b on b.UserId = u.UserId join Dossiers d on d.UserId = u.UserId where u.UserName = 'USERNAME'
      
      





著者との対話が続きました:



-なぜ通常の名前の代わりにu、b、dを使用するのですか?

-とても短い。



ご存知のように、この議論は完全に真実です。 確かに、それは短いです。



どう?



 select bi.BusinessIdentifir, bia.SSAFA, IsNull(bia.Bullshit, 'Bullshit'), bis1.*, bis2.*, bis.* from businessItems bi inner join businessItemsArtifacts bia on ... inner join businessItemsSegment bis1 on ... inner join businessItemsSegment bis2 on ... inner join businessItemsSegment bis3 on ... where bia.Date = @creationDate and bi.Staus = 'RFW' AND ( (bis1.SignIn = 'Europe' and ss2.Limit = 42 and bis3.Connection not in ('Towel', 'Galaxy')) OR (bis1.SignIn = 'USA' and ss3.Limit = 146 and bis2.Connection not in ('Trump', 'Klinton')) OR (bis1.PNH = 'SP' and ss2.Limit = 21 and bis3.Connection not in ('Stan', 'Kyle', 'Cartman')) )
      
      





要求には既に特定の定数とフィルターがいっぱいです。それを複雑にする必要は本当にありますかbis1、bis2、bis3?



しかし、私を終えた



 SELECT MFID# as MemberId, TRIM(ACX) as FirstName, TRIM(ABX) as LastName, TRIM(FGS) as Suffix, TRIM(c.DSC) as Country, TRIM(mm.CCC) as CountryCode, FROM {0}.mailfl LEFT OUTER JOIN BDSMTAMDRT.MEMFLT mm ON MFID# = mm.MMID# LEFT OUTER JOIN BDSMTAMDRT.CTRCOD c ON mm.CCC = c.CCTRY WHERE mfid# = ?
      
      





著者は、選択可能なフィールドに正しい名前を付けましたが、テーブルに名前を付けませんでした。



このシャープな習慣がどこから来たのか知っていますか? 教育文献から。



Shildtを開きます。



 var posNums = nums.Where(n => n > 0).Select(r => r);
      
      





私はmsdnを開きます



 IEnumerable<int> squares = Enumerable.Range(1, 10).Select(x => x * x);
      
      





Troelsenを開きます:



 List<int> evenNumbers = list.FindAll(i => (i % 2) == 0);
      
      





Metanitprofessorweb-どこでもクロール



 numbers.Select(n => ...), teams.Select(t => ...)
      
      





そして、次のようなアーティファクトがコードに表示されます



 team.Select( p => p.Age > 18);
      
      





「ショーツ」が表示されるもう1つの理由は、コードの変更です。 Productsテーブルで1行のクエリがありましたが、名前の命名は本当に必要ではなく、pが残っていました。 次に、現在のスタイルを変更しないように、ProductGroupsにjoinを追加しました。 次に、コードを別のリクエストにコピーし、プロファイルに参加しました。その結果、p、pg、prがあります。



あとがきの代わりに。 実際、問題は「悪い」コードにはまったくありません。 問題は、私がこのような作品に出会ったのは今から1年であり、今しか注意を払っていないことです。 問題は、最も目立つ場所にさらにいくつの欠陥があるかということです。



All Articles