因为篇幅很短,所以尝试全文字写法。几分钟看完的文字也没必要用十几分钟写完是吧。

C#中的partial关键字,是一个非常有用的东西,尤其是在代码组织方面。

1.

每一个项目都会构建大量的class文件,也需要使用这些class创建非常多的对象。但是出于业务安全性和调试方便,在创建对象前需要对对象的参数进行有效性检测(例如断言),而对象的创建,是一个非常复杂的事情,有时需要一组函数才能完成。这两者(class本身的代码和创建对象的代码)的代码混在一起,搞得单个class文件非常臃肿。

partial可以把类逻辑(构造函数我也算成是类逻辑的代码),和对象创建代码彻底分开。对我来说这是一个很有用的功能。一般构建一组class(通常是一个父类和一堆子类),我会分成若干文件,Parent,Child1,Child2……等,再使用一个专门的XXXHelper文件来编写各种Child的对象生成代码。Helper中可能是instance,create等写法,也可能是各种工厂,再加上一些有效性检测和异常处理。这样代码非常清晰,尤其是Child的代码可以写的很干净。

2.

partial还有一类非常有意思的写法。很多项目都喜欢编写全局工具或数据类,名叫Global或者Config等,里面有很多数据和函数。根据经验判断,真正全局所有模块使用的东西不会很多。很多东西都只是在部分模块中使用。时间久的话,你根本分不清楚这些函数或数据是对应哪个模块下面的,这时候partial的分散写法就有很大优势了。你可以写一些分散文件,集成到各个模块的文件夹下面,当然各个模块通用的还是放到一个文件里面好,partial可以保证你依然能通过同一个全局名字访问他。

由于partial关键字,代码都在同一个类名字下面,你可以在不同的文件中自由移动这些代码。

3.

partial对自动化支持非常有用,你可以把代码分成两部分,一部分是业务代码,一部分是自动化生成代码(例如很多领域的UI编辑器就是这么干的,C++的做法也是类似,只是没partial用的别的方法,思路都是一样)。因为在不同文件中,自动化生成代码不会干扰业务代码。自动化生成对于提高开发效率至关重要。

转载于:https://blog.51cto.com/goldlion/2148193

【C#懒蛋编程——5分钟经验分享】02使用partial关键字,分离代码相关推荐

  1. 【C#懒蛋编程——5分钟经验分享】01逆序遍历删除,防止迭代器失效

    因为篇幅很短,所以尝试全文字写法.几分钟看完的文字也没必要用十几分钟写完是吧. foreach遍历List操作很方便,这节省了部分[]取数据和下标计算的代码.写起来很简洁.但是如果是遍历删除的话,你会 ...

  2. 【C#懒蛋编程——5分钟经验分享】03使用Description特性标签,简化查找表编写

    因为篇幅很短,所以尝试全文字写法.几分钟看完的文字也没必要用十几分钟写完是吧. Attribute(特性标签)是C#中非常有用的一个特性,有用到什么程度呢?以至于C++的很多开发者,都通过自己的预处理 ...

  3. 【比赛经验】陈成龙博士Kaggle计算机编程竞赛数据挖掘经验分享

    来源:腾讯广告算法大赛(ID:TSA-Contest) 作者简介 陈成龙, 2015 年博士毕业于中山大学,研究图像篡改检测,在图像领域顶级期刊IEEE TIP上发表论文2篇,Kaggle Crowd ...

  4. TiDB经验分享02

    前言 紧接着上一篇文章TiDB经验分享01 的内容接着往下更新,在上一篇文章中主要论述了TiDB的基础架构和其包含的两种存储引擎 TiKV TiFlash,这一篇我们主要论述TiDB在生产使用的特点 ...

  5. UG编程老师傅纯经验分享,通过面铣来实现黄线加工的设置方式

    今日来讲一讲用面铣来完成黄线加工的设置方法,其实面铣和平面铣的设置是大同小异的,咱们先看下图的黄红加工刀路 黄线能够加工圆形或方法或异形工件都OK,只需你的机台支持走黄线,下面咱们来看下在面铣加工中详 ...

  6. 哈理工第一节编程课及经验分享

    1.学习的第一个代码 #include <iostream>                                                #include <cdt ...

  7. 大恶人吉日嘎拉之走火入魔闭门造车之.NET疯狂架构经验分享系列之(五)代码复用...

     以下观点只是纯粹站在技术角度,先不讨论商业上的,若是考虑到商业利益等,那问题就复杂了,实际环境会比我们想象得复杂很多,但是连想象都不过关,实际操作起来会更闹心一些. 软件的优点就是复用,其实复用在另 ...

  8. 2020软件开发工程程序员面试经验分享--菊厂OD现场码代码试题1

    1.设计电梯时,房地产商要求在电梯按钮上不允许出现数字"4",即电梯数字序列为1,2,3,5,6,7,8,9,10--,现在需要提供一个函数getRealLevel,传入电梯按钮上 ...

  9. 【学习经验分享NO.16】超全代码-python画Sigmoid,ReLU,Tanh等十多种激活函数曲线及其梯度曲线(持续更新)

    文章目录 前言 1. Sigmoid 2. tanh 3. ReLU 4. Leaky ReLU 5. ELU 6.PReLU 7. Softmax 8. Swish 9. Maxout 10. So ...

最新文章

  1. 数据库中数据类型和约束(整数类型、字符串、时间类型)
  2. Matlab学习笔记——文件的打开与关闭
  3. python未将对象引用设置到对象的实例_未将对象引用设置到对象的实例(SystemNullReferenceException)...
  4. 海量分布式爬取抖音视频,几行代码搞定
  5. android flash闪退,Android全面停止Flash Adobe专注HTML5
  6. 转:多线程环境下调用 HttpWebRequest 并发连接限制
  7. 调用AutoCAD的内置对话框
  8. Linux内核态抢占机制分析
  9. 你可能需要的网易前端三轮面经
  10. 2019年了,C#发展的怎么样了呢?
  11. cuda nvidia安装程序失败_Ubuntu16.04安装nvidia-docker
  12. Bailian2719 陶陶摘苹果(POJ NOI0106-02, vijos P1102)【序列处理】
  13. restlet和ajax,使用Web测试插件Restlet Client发送Get和Post请求的方法教程
  14. Javascript使用模板字符串,find,findIndex,some,every查找数据以及map,filter过滤数据,reduce求和或平均值
  15. Mirth Connect 第三章 创建通道
  16. h3c交换机-初级命令
  17. Proteus软件初学笔记
  18. pdf文件怎么合并在一起
  19. 程序员电脑(减少辐射)(¥37)
  20. win10强制关闭飞行模式_Win7已毕业,你为什么还不用Win10?

热门文章

  1. 不定积分知识结构图_大一上学期《高等数学》知识整理-第四章 不定积分
  2. 音频降噪算法 附完整C代码
  3. 基于单片机语音智能导盲仪仿真设计-毕设课设资料
  4. 杭哥试用过的精品软件推荐:毛笔字生成软件(ougishi) 4.00 书法 唐宋八大家
  5. Qt如何改变鼠标形状
  6. c语言名题精选百则,Victor's Log
  7. 更多Windows Phone 8新功能详解
  8. (笔记)数据结构--抽象数据类型的定义
  9. Atitti 住房部建设指南
  10. 持续集成/持续部署(1)Git Gitlab