学校の弟は、ああ、あなたはとても悪いコードを書くことができませんか?! - 本を送信するために、テキストの終わり

オリジナルリンク: https://item.jd.com/12696168.html

トップをクリックして、[フルスタックの開発者コミュニティ]右上[...][]に設定⭐主演]

640?

著者:デザートイーグル

www.cnblogs.com/buptzym/archive/2013/05/25/3099389.html

今日のカバーアート:スパゲッティ(スパゲッティコード、我々はすべて知っています)


私は、大学院生通常の巨根ワイヤー健二今後のインターンシップや卒業した研究生の番号とともにデータマイニングプロジェクトを行います。私はその後、以降、彼らは研究室に入った卒業傾くせませんリード教師を防ぐためには、卒業時には「トレーニングデザインパターンとコード・スタイルを始めました」。


具体的なアプローチは、「デザインモードの嘘」とJinxu梁先生のそれらを投げることである「.NET 4.0オブジェクト指向プログラミングの話。」だから、それはその後...以下のとおり崩壊され、プロジェクトを行う、と昨日SVNを開いて、すべての権利をアイドル彼らが書くコードの様々を見るまで私は、どのように忙しい彼らが書いたコードを見ていません。


1. 以前に、今より良い変数A1、A2、A3を、名前を付けられますが、ピンインを使用することはできませんか?ClusterMethodを書かれていない場合でも、クラスタリング機能が、ああJuleiMethodを呼び出すことはありません!継承を使用すると、彼らはそれの特性を向上させるために反応しているか、新しいクラスは、少なくとも右、XXXFinal、XXXTestまたはXXX2呼び出すことはできませんか?


640?wx_fmt = JPEG


私が考えていた、このGuoDu何ですか?過度の?国?私は本当にこのようなものピンインフィールドをマイニングデータがあるとは思いません。


2.大規模なクラス!どの程度それをするには?

五百行?いいえ、1000行?5000本のライン、ありません!、コードの説得力の5000行、100個の変数、50の以上の機能は、別個の論理ああにあえて、実現が、スクロールバーコードが美観であるfunction'd?メインウィンドウクラス 「シングル責任は」最大限に本当にです:クラスは教師の仕事を得るために!


3.あなたは怠惰や勤勉されていますか?

同様の機能のいくつかのクラスは、ああ、四、五回の同じ機能のコピーを取ることはありません、それを継承していない場合でも、いくつかの詳細のみが異なります。以下は、2つの異なるクラスのスクリーンショットは、次のとおりです。


640?wx_fmt = PNG


4.スクリーンショット以上。オブジェクトは、基本クラスをプログラミングすることは、あなたが望む属性がありませんが、それのようにすべての時間を必要としない場合は、ツリーのリーフノードを継承することができますか?それは単一の変数である場合には、裁判官の前にコードと非空として十分ではありませんか?


収集した場合、コレクションは、コードの先頭にLINQ文によって対応するタイプを抽出するのに十分ではないでしょうか?ほど、あなたはそれ退屈に感じることはありませんか?


5. クラスが多くのパラメータがありますが、それはすべてのパラメータ設定は、コンストラクタ関数ああに書かれている取るに失敗することはできません、あなたは10個のパラメータを持っている、コンストラクタのパラメータ10を書き込む必要がありますか?デフォルト値は行うことができないのですか?作られた他のプロパティアクセサは十分ではありませんか?


640?wx_fmt = PNG


6.ああシングルトンと静的変数やメソッドのように好きではないですか?しかし私は、メモリがそれを思い出し、どこでも呼び出し、あなたがシングルトンと静的クールを使用して知っていますか?それのコード延長?


640?wx_fmt = PNG


ブラザー、どのようにこの辞書を言っても、あなたが得るシングルトンを容易にするために、あなたはそれがああGCリサイクルシャシ侯も聞かせて、200Mのメモリを占めることができますか?


7. 我要你把一个代码从JAVA移植到C#上,还真是够辛苦,JAVA没有属性访问器,但是C#里面有啊,干嘛还在C#上把所有的属性都加上个 getXXX() 和setXXX()方法。你真勤快!而且还加上了javadoc风格的注释,真是辛苦你了


640?wx_fmt = JPEG


8. 代码注释是用来说明代码的,稍微有些个注释掉的东西还是能理解的,可是,你一个长长的代码文件里,注释比源代码多好几倍,都是以前随便写的测试代码,废弃的代码,舍不得删,可是,后来你再看过吗?你都没看过,这些大段的注释除了碍眼有什么用处?


640?wx_fmt = PNG


9. 蛋疼的在集合中删除元素!

你学会了foreach, 可爱的迭代器模式,于是和我一样,不喜欢写for循环了。哪天你问我,foreach中remove会报错!我说,当然会报错,于是你在外面new一个集合,把要删的全拷贝进去,然后再来个for循环拷出来,然后。还是不对,最后只能再用for循环了。看得我都要心碎了,咱先不说性能,用LINQ写一个扩展方法RemoveElement不就好了?


///

       /// 对集合实现删除操作

   ///

       ///元素类型

       ///要删除的元素列表

       ///过滤器

       ///删除时执行的委托

       public static void RemoveElements(

           this IList source, Func filter, Action method)

       {

           var indexs = (from d in source where filter(d) select source.IndexOf(d)).ToList();

           indexs.Sort();

           for (var i = indexs.Count - 1; i >= 0; i--)

           {

               if (method != null)

               {

                   method(source[indexs[i]]);

               }

               source.RemoveAt(indexs[i]);

           }

       }


然后,你在实现IList接口上的集合都能删除元素了,并且还能通过一个委托做一些操作,多舒服啊…


10.  你会在一个类的成员里很高兴的定义一个变量,比如下面:

640?wx_fmt = PNG


一个随机数产生器ran, 然后私有成员还很勤快的写了get,set访问器,下面诡异的arrh,这都不说啥了,关键是下面:


640?wx_fmt = PNG


这个变量被你在函数中轻易的覆盖了,覆盖了也不管,反正好像程序结果也是正确的,可是以后没这么走运怎么办?


11.  你不懂什么叫写“库”,只知道写代码,代码重用就是代码搬运工,从这边拷贝到那边。真正的库是什么?稳定,高效,好用,扩展性强。 到现在都没写过一个库,老师布置什么任务,新开一个工程,名字命名成XXXTest, 然后一顿狂敲,毕业时候,工作就是那么20多个不同的文件夹,所有代码都是给自己写给自己看,到最后连自己都看不懂了… 那些能够重用的功能,为什么不好好重构一下,以后肯定还能用得着啊!


12. Console.WriteLine(“xxxxxxxx”)

Console.WriteLine(“xxxxxxxx”)

Console.WriteLine(“xxxxxxxx”)


你给写的类库,里面全是这些控制台输出,做Console程序还好,一个大黑框哗哗哗的输出出来,可是,做WPF界面程序和WCF呢?你总不至于输出到VS里那个小小的调试窗口吧!我哪天想让你输出到txt文件,你是不是就傻眼了?  敢不敢用用专门的日志组件,比如log4net!


13.  C风格的C#, 里面全是数组,数组,数组。。。。。。太怨念了。.NET疯了会搞那么多集合和接口进去?全用数组不就得了?


两个集合的对应元素需要做加法,你是这么做的:

640?wx_fmt = PNG


可是,如果这个代码被执行1000遍,你就要new一千次数组,且不管GC效率如何,这种需求你完全可以返回一个IEnumerable过去,通过类似LINQ的延迟计算进行,也不用生成这么多数组啊啊啊。


13. for循环啊!

640?wx_fmt = PNG


能不能写个for循环?敢不敢?不仅如此,你都愿意为一块仅仅有细微差别的代码复制十遍,却不敢写一个for循环?


14. 做界面时候的事件引用器…

在界面上,你会在每个按钮,每个菜单双击一下,然后在C#代码中,敲事件处理程序,无非就是一堆变量赋值,一堆初始化等等,若你是做Winform,那我也就勉强不说什么了,可是你做的是WPF,这么紧密的耦合,让以后我改界面或者改逻辑的时候怎么办?敢不敢去学一下绑定和MVVM?


15. 多数のスロットは、例えば、あなたが便利な場所にtxtファイルをデバッグしているプログラムでメガバイトの出力数百人が、できる、ポイントがあるにも関わらず、適切に使用することはありませんSVNは、その後、あなたはSVNの上に行くために不謹慎にアップロードする必要があります競合が直接決定するために指して競合していないので、私はほとんど我慢できないです。


//先輩は本当にブタであります  

640?wx_fmt = PNG

推奨人工知能と健康

640?wx_fmt = PNG

 
  

編集者:

「人工知能と健康」AI人工知能は、医療読者との戦闘のマニュアルです。最先端に基づく簿は、医療業界でのアプリケーションの履歴、アプリケーション、および人工知能技術の展望の包括的な見直しは、詳細な議論は、AI人工知能医療医療産業革命をもたらします:精密医療、インテリジェント医療、モバイル医療、遠隔医療、低コスト医療、ヘルスケアは、人工知能技術ので現実に低リスクとなります。

コピーアモイパスワード「€6KceYLOraKb€」または多くを学ぶために、オリジナルをお読みください。


私は、この論文はあなたを助けると思いますか?より多くの人々と共有してください

「ウォッチフルスタックの開発者コミュニティを、主演し、」フルスタックのアップグレードのスキルを


この番号は、それを楽しみにしててください、本を送る学習リソースを含め、福祉を送る時から全員にパブリックになります!

あなたがいる場合に感じるプッシュコンテンツは良いですが、それは右下隅かもしれ探し、支援への感謝前方友人やお気に入りの円を。


良い記事、私は見て❤️

おすすめ

転載: blog.csdn.net/weixin_35681869/article/details/102481073