推广 热搜: csgo  vue  angelababy  2023  gps  新车  htc  落地  app  p2p 

学弟啊,你代码能不能不要写得这么烂?!

   2023-08-06 网络整理佚名2240
核心提示:一个类里面有很多个参数,但能不能不要把所有的参数设置都写到构造函数里面啊,你有10个参数,就要写十个参量的构造函数?看得我都要心碎了,咱先不说性能,用LINQ写一个扩展方法不就好了?不仅如此,你都愿意为一块仅仅有细微差别的代码复制十遍,却不敢写一个for循环?

我是一名普通研究生,即将实习,研究二年级毕业。 我带了几位一年级研究的同学一起做数据挖掘项目。 为了防止毕业时老师因成绩不佳而拒绝让我毕业,我从刚进实验室就“开始了设计模式和代码风格的培养”。

具体方法就是给他们扔金旭良老师的《大话设计模式》和《.NET 4.0面向对象编程大话》。 所以这个项目继续进行。 我也很忙,没有看他们写的代码。 直到昨天有空的时候,我打开SVN看他们写的各种代码,然后就崩溃了……清单如下:

1、以前我们用a1、a2、a3来命名变量,现在好多了,但是能不能不用汉语拼音呢? 即使您不编写聚类函数,也不要调用它! 有了继承,新的类就得体现出改进的特性,至少不能被调用,或者XXX2吧?

我就在想,这国都是什么? 超过? 国家? 我实在想不出数据挖掘领域这个拼音的东西。

2.品类庞大! 它有多大?

五百行? 不,一千行? 不,是五千行! 一个类中有5000行代码、100个变量、50多个函数。 功能实现了,但是代码滚动条太细了,看不到。 你敢把逻辑分开吗? 真正发挥了“单一责任”:一个班级一个老师的任务!

3.你是懒惰还是勤奋?

几个类的功能是类似的,只是一些细节不同,即使不做继承,同一个功能也不要复制四五次。 以下是两个不同类的屏幕截图:

4. 截图同上。 对象可以是继承树中的叶节点。 编程的时候,这个基类没有你想要的属性,但是你不需要每次都用as,对吧? 如果是单个变量的话,像之前的代码一样使用,判断不为空不就好了吗?

如果是集合的话,通过代码开头的LINQ语句提取集合中对应的类型不就好了吗? 看到这么多你不觉得烦吗?

5、一个类中的参数很多,但是能不能把所有的参数设置都写在构造函数中呢? 如果有10个参数,你就得写一个有10个参数的构造函数? 可以设为默认值吗? 制作其他属性访问器不是很好吗?

6. 你能不能不再那么喜欢单例模式和静态变量和方法了? 我知道你对单例和静态非常感兴趣,你可以在任何地方调用它们,但是内存恢复呢? 代码的可扩展性怎么样?

老哥,怎么说这个字典也能占用200M内存,方便的话单实例搞定,什么时候让它被GC回收呢?

7. 我希望您将代码从 JAVA 移植到 C#。 这确实很辛苦。 JAVA没有属性访问器,但C#有。 为什么C#上的所有属性还要加上()和(?)方法。 你真勤奋!还加了样式注释,真是辛苦你了

8.代码注释用于解释代码。 有些被注释掉的东西还是能看懂的。 然而,在你的长代码文件中,注释比源代码多了好几倍,而且都是之前随便写的测试代码。 ,过时的代码,舍不得删除,但是,你后来又看了一遍吗? 你没看过吧,这些长评论除了碍眼之外还有什么用?

9. 从集合中删除元素是一件很痛苦的事情!

您学习了可爱的迭代器模式,所以像我一样,我不再喜欢编写 for 循环。 如果有一天你问我,我会报错! 我说当然会报错,所以你在外面新建一个集合,把要删除的东西都复制进去,然后用for循环复制出来,然后。 。 。 还是不行,最后只能再次使用for循环。 看得我心都碎了,不谈性能了,就用LINQ写个扩展方法?

///

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

///

///元素类型

///要删除的元素列表

///筛选

///删除时执行的委托

空白 (

这个 IList , Func , )

var = (来自 d in where (d) .(d)).();

。种类();

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

如果(!=空)

([[我]]);

。([我]);

然后,就可以删除实现了IList接口的集合中的元素,还可以通过委托来做一些操作,该是多么的舒服啊……

10. 你会很乐意在类的成员中定义一个变量,如下所示:

跑了一个随机数生成器,然后私有成员很勤奋地写了get和set访问器,出现下面奇怪的arh,没什么好说的,关键如下:

这个变量很容易被你在函数中覆盖,覆盖了也没关系。 无论如何,程序的结果看起来是正确的,但是如果以后你没有那么幸运怎么办?

11.你不知道写“库”意味着什么,你只知道如何写代码,代码复用就是代码搬运工,从这里复制到那里。 真正的图书馆是什么? 稳定、高效、易用、可扩展性强。 到现在还没写过库,老师布置什么任务,开个新项目,命名,然后敲出来。 毕业的时候,我的工作就是20多个不同的文件夹,所有的代码都是自己写的。 给自己看,到最后连你都看不懂……那些可以复用的功能何不重构一下,以后肯定有用啊!

12..(“”)

.("")

.("")

您编写的类库充满了这些控制台输出。 编个程序没问题,输出一个大黑框。 但是,WPF接口程序和WCF呢? 无法输出到VS中的小调试窗口! 有一天我想让你输出到txt文件,你傻眼了吗? 你敢不敢用特殊的日志组件,比如!

13. C风格的C#,里面充满了数组,数组,数组。 。 。 。 。 。 太怨恨了。 .NET搞这么多集合和接口是疯了吗? 使用所有数组还不够吗?

需要添加两个集合的相应元素,如下所示:

但是,如果此代码执行 1000 次,则需要创建一千个新数组。 不管GC效率如何,对于这种需求,完全可以回到过去,通过类似LINQ的延迟计算来做,而不用生成那么多数组。 啊啊。 。 。 。

13.for循环!

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

14. 制作界面时的事件引用...

在界面上,你会双击每个按钮、每个菜单,然后在C#代码中,点击事件处理程序,无非就是一堆变量赋值,一堆初始化等等。那我就勉强说什么了,但是你做的是WPF,这么紧耦合,以后改界面或者改逻辑怎么办? 敢于学习绑定和MVVM吗?

15. 插槽数不胜数。 比如你会在程序位置输出几百兆的txt文件,方便你调试,然后你就肆无忌惮的上传到SVN上。 SVN从来没有正确使用过,不管是否有冲突,直接点击确定即可。 最令我难以忍受的是:

// 前辈真是猪

(主页注:@水华子儿童的建议是://.isPig()==true;)

哼! 明天开会我就给你打扫卫生!

同学们,如果你们看到这篇文章,请不要记恨我,或者告我导师,我还是想正常毕业……

首页君插话:这是一篇老文章,原作者已毕业

 
反对 0举报 0 收藏 0 打赏 0评论 0
 
更多>同类资讯
推荐图文
推荐资讯
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报
Powered By DESTOON