- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
写出优雅简明代码论题集——CSharp(一)
写出优雅简明代码的论题集 -- Csharp(C#)篇[1]
作者:?拥有的都是恩典(宋历)??发布时间: 2011-02-12 07:31
最近和一些朋友讨论如何写出优雅的代码,我们都很喜欢C#,所以以C#为例。主要一共有三位程序员在一起讨论,为简单起见我用ABC代表我们三个人。
有时候我们会针对一些代码进行讨论,有时候我们会提出一些观点,有时候我们会一起学习网上一些现有的博客,为了便于大家引用,我给每一个论题都编上号。
在很多情况下,我们的意见统一,那么我会给大家呈现我们的结论;但是有些情况我们有分歧。
你可以加入我们的讨论,我非常也希望能够获知你的意见,让我们一起茁壮成长!
好吧,让我们今天就开始。
论题一:函数越小越好!
相信绝大部分程序员会认同这一点,维护一个超过100行的函数会让人抓狂。
我记得我以前修改过一个用cobol写的程序,一个文件超过10万行,我为了进行一个极其小的修改花了3天的时间,而且最后自己也不知道会不会造成什么严重的后果。-- 这已经过去8年了,希望那段代码运行良好。
到底理想状态下,我们的函数应该不大于多少行?我们三个人的答案是:
A: 10 行
B: 15 行
C: 20 行
论题二:用 Linq 简化代码
Linq有时可以帮助我们写出一些非常“人性”的语句。
下面的这个函数是用于在数据库中插入新的评论:
public static void Create(IEnumerableCommentData Comments, SqlConnection cn)
{
// validate params
if (null == cn) throw new ArgumentNullException(cn);
if (cn.State != ConnectionState.Open) throw new ArgumentException(Invalid parameter: connection is not open., cn);
if (null == Comments) throw new ArgumentNullException(Comments);
foreach (CommentData data in Comments)
{
if (data.CommentId.HasValue)
throw new ArgumentNullException(Create is only for saving new data. Call save for existing data., data);
}
....
其中foreach这一部分可以简化为
if (Comments.Any(data = data.CommentId.HasValue))
{
throw new ArgumentNullException(Create is only for saving new data. Call save for existing data., data);
}
在这一点上,我们存在分歧,A认为没有必要进行简化,因为原来的已经很明确了;但B认为简化后的代码可读性更强,看上去更加直接。
希望每个人都已经知道C#的这个用法了,直接上一些代码:
3.1
原始代码:
Listint idsToFind = new Listint();
idsToFind.Add(1);
idsToFind.Add(2);
修改后:
Listint idsToFind = new Listint {1, 2};
3.2
原始代码:
var startingPoint = new Point();
startingPoint.X = 5;
startingPoint.Y = 13;
修改后:
var startingPoint = new Point() { X = 5, Y = 13 };
论题四:运用 ?:和??
据说,有些公司会拿这个来测试入门的程序员:
4.1
原始代码:
if (c != null)
System.Console.WriteLine(c.Name);
else
System.Console.WriteLine(List element has null value.);
修改后:
System.Conso
您可能关注的文档
- 内蒙古大学201年招收攻读硕士学位研究生复试录取工作办法.doc
- 内蒙古大学研究生位论文格式要求.doc
- 内蒙古工业大学毕设计(论文)撰写规范.doc
- 内蒙古师大高考补学校2013届高三上学期期中考试地理试题.doc
- 内蒙古民族大学毕论文要求.doc
- 内蒙古民族大学班任考核自评表.doc
- 内蒙古满洲里市213-2014学年七年级地理上学期期末考试试题 新人教版.doc
- 内蒙古环成职业技学校建立专业实训基地建设方案.doc
- 内蒙古科技大学家经济困难学生认定及管理办法.doc
- 内蒙古科技大学通工程专业培养方案.doc
- 《GB/T 32879-2025电动汽车更换用电池箱连接器》.pdf
- 中国国家标准 GB/T 21649.2-2025粒度分析 图像分析法 第2部分: 动态图像分析法.pdf
- 中国国家标准 GB/T 20899.9-2025金矿石化学分析方法 第9部分:碳量的测定.pdf
- 《GB/T 20899.9-2025金矿石化学分析方法 第9部分:碳量的测定》.pdf
- GB/T 20899.9-2025金矿石化学分析方法 第9部分:碳量的测定.pdf
- 《GB/T 33820-2025金属材料 延性试验 多孔状和蜂窝状金属高速压缩试验方法》.pdf
- GB/T 33820-2025金属材料 延性试验 多孔状和蜂窝状金属高速压缩试验方法.pdf
- 中国国家标准 GB/T 33820-2025金属材料 延性试验 多孔状和蜂窝状金属高速压缩试验方法.pdf
- GB/T 45910-2025信息技术 生物特征识别模板保护方案的性能测试.pdf
- 《GB/T 45910-2025信息技术 生物特征识别模板保护方案的性能测试》.pdf
最近下载
- 《成人住院患者静脉血栓栓塞症的预防护理2023版团体标准》解读.pptx
- 开题报告医学PPT模板.pptx VIP
- 2011中考英语作文指导及范文.doc VIP
- 高考英语总复习-第二部分-语法填空专项突破-专题二-无提示词填空-第六讲-并列句和状语从句-市赛课公.pptx VIP
- 工会招聘考试试题及答案.doc VIP
- 河北省中考英语复习指导课件.pptx VIP
- 供应商评级管理办法.docx VIP
- 2025年人教版高一下学期期末考试数学试题与答案解析(共五套) .pdf VIP
- 2025年河北沧州渤海新区黄骅市事业单位公开招聘工作人员130名笔试备考试题及答案解析.docx VIP
- 党纪党规知识测试题及答案_党规知识测试题及答案.doc VIP
文档评论(0)