论C#逼格手册
水文。如何让自己的代码看起来,更有逼格?
要想让自己的代码,看起来更优雅,更有逼格,更高大上,就一定要写出晦涩难懂,而又简洁的代码来。
对于类自身的全局变量,一定要加this,对于基类的,一定要加base。反射不要多,但一定要有,而且偶尔就来上那么一两个。
接口,抽象类,抽象方法一定要懂得利用。可以的话,配上 :base(param), where T : interface 之类的方式。
对于event,delegate 要常用。而且不要直接delegate(),要用delegate.invoke();
如果对于自己的功底有把握的话,delegate.beginInvoke()也是很显逼格的一种方式。
async,await之类的能免则免,尽可能的封装delegate,去beginInvoke。
命名也一定要尽显逼格,对于变量名,怎样短怎样来。对于方法名、事件名,怎样长怎样来。
如果自己封装cache,要用key/value数据格式, 不要用Dictionary,Hashtable,一定要用ConcurrentDictionary/IEnumable<KeyValuePair>,除了对外公开 object GetValue(string Key)这样的方法以外,必须还得配上索引器 public object this[string Key]。
对于lock,monitor,autoResetEvent,跟反射一样,不要多,但是一定要有,且必须醒目。
对于任何功能,只要有把握,就先弄个Init,启动两个以上的线程,然后加各种ConcurrentStack,ConcurrentQueue之类的代码。若功能实在是太简单,也可以加上Task.Factory.StartNew(()=>{});
然后要学会使用各种IQueryable,lambda,Func<>, linq,linq树,入眼皆是一片的startWith, continueWith,AsParallel,Expression<>,()=>{}等, 而且一定要随处可见from ... into ... select等。
各种匿名函数,匿名委托,匿名类,各种约束,也要如同家常便饭,信手拈来。
然后就是各种语法糖,也要灵活运用,对于需要返回两个以上值的,不要用ref, out来返回参数,要用Tuple,对于返回[]的,要常用yield。
对于任何类,没要求的,先继承了IDispose再往下写。using是绝逼不能少的。
对于Switch..case,工厂,策略,一律统统戒掉,要灵活使用IOC,而且绝逼不能使用任何第三方的,如Autofac,Unity,Castle之流。一定要自己封装,耍上几个Attribute,CreateInstance,局部的也可采用dynmaic。
对于不再使用的代码,或是已经重构掉的代码,也不要注释,或者删掉,要加上[Obsolete],来展示这是自己的优化成果。
嗯,排版上也要注意,对于参数比较多的,一定要每个参数占一行,对于传实体的,一定不要在函数外定义,而是在参数上面new class{ xxx };且每个大括号,必须独占一行。
对于方法里面代码比较长的, 也要常用{}来进行分段,且每个大括号,必须独占一行。
对于低级幼稚的,一定要避免。比如 return num == 1 ? true : false; 之类的代码,就不要出现了,直接 return num == 1;
对于Convert.ToInt32(Request["key"]);double.TryParse(Request["key"], out double)之类的代码,也不要暴露出来,要学会用扩展类Request.Form[].ToInt();ConfigurationManager.Appsetting[""].ToDouble()等, 也可以使用 .ToValue<int/double> 之类的方式。
论C#逼格手册的更多相关文章
- 【工匠大道】一些Vim(Linux)不常见但很逼格的命令(不断更新中)
本文地址 分享提纲: 1. :Tlist 2. :colorscheme 3. :set cursorline 4. ma 5. vim -x 6. CTRL-] 7. 折叠 8. 向别的用户终端写信 ...
- Spring4参考手册中文版
Spring4参考手册中文版 前言 https://github.com/b2gats/stone-docs/blob/master/spring-4-beans.md Part III. 核心技术 ...
- FREERTOS 手册阅读笔记
郑重声明,版权所有! 转载需说明. FREERTOS堆栈大小的单位是word,不是byte. 根据处理器架构优化系统的任务优先级不能超过32,If the architecture optimized ...
- JS魔法堂:不完全国际化&本地化手册 之 理論篇
前言 最近加入到新项目组负责前端技术预研和选型,其中涉及到一个熟悉又陌生的需求--国际化&本地化.熟悉的是之前的项目也玩过,陌生的是之前的实现仅仅停留在"有"的阶段而已. ...
- 品牌营销:不要Beat,要逼格!
品牌营销:不要Beat,要逼格! 奥美的创始人大卫·奥格威说,广告营销应当是"具有风度的推销产品".而当下的营销手段,"风度"早已被抛之脑后, ...
- 转职成为TypeScript程序员的参考手册
写在前面 作者并没有任何可以作为背书的履历来证明自己写作这份手册的分量. 其内容大都来自于TypeScript官方资料或者搜索引擎获得,期间掺杂少量作者的私见,并会标明. 大部分内容来自于http:/ ...
- Redis学习手册(目录)
为什么自己当初要选择Redis作为数据存储解决方案中的一员呢?现在能想到的原因主要有三.其一,Redis不仅性能高效,而且完全免费.其二,是基于C/C++开发的服务器,这里应该有一定的感情因素吧.最后 ...
- JS魔法堂:不完全国际化&本地化手册 之 实战篇
前言 最近加入到新项目组负责前端技术预研和选型,其中涉及到一个熟悉又陌生的需求--国际化&本地化.熟悉的是之前的项目也玩过,陌生的是之前的实现仅仅停留在"有"的阶段而已. ...
- Windows API 函数列表 附帮助手册
所有Windows API函数列表,为了方便查询,也为了大家查找,所以整理一下贡献出来了. 帮助手册:700多个Windows API的函数手册 免费下载 API之网络函数 API之消息函数 API之 ...
随机推荐
- 在离线环境中发布.NET Core至Windows Server 2008
在离线环境中发布.NET Core至Windows Server 2008 0x00 写在开始 之前一篇博客中写了在离线环境中使用.NET Core,之后一边学习一边写了一些页面作为测试,现在打算发布 ...
- 一次修改闭源 Entity Provider 程序集以兼容新 EntityFramework 的过程
读完本文你会知道,如何在没有源码的情况下,直接修改一个 DLL 以去除 DLL 上的强命名限制,并在该程序集上直接添加你的“友元程序集(一种特殊的 Attribute,将它应用在程序集上,使得程序集内 ...
- 移动硬盘不能识别的常见7种解决方案 ~ By 逆天经验
服务器汇总:http://www.cnblogs.com/dunitian/p/4822808.html#iis 服务器异常: http://www.cnblogs.com/dunitian/p/45 ...
- 前端学Markdown
前面的话 我个人理解,Markdown就是一个富文本编辑器语言,类似于sass对于css的功能,Markdown也可以叫做HTML预处理器,只不过它是一门轻量级的标记语言,可以更简单的实现HTML ...
- JavaScript之职责链模式
一.概述 职责链模式(Chain of responsibility),就是使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系.将这个对象连成一条链,并沿着这条链传递该请求,直到有 ...
- javascript 判断参数类型大全
js 判断类型的在开发中是很常用的,因为js 是弱类型的语言,var 可以接受任何形式的类型,但是在真正的开发中,我们需要根据不同类型做不同的处理,所以这个是必须的精通. 首先需要知道 typeof这 ...
- bcp 命令实例
set sql_flow="select Id,',',ApplierName,',',FlowStatus,',',IsApproved,',',CreateTime from *** w ...
- Extjs 让combobox写起来更简单
也已经写了很久时间的extjs ,每次都用到很多的combobox,配置很多东西觉得实在是太麻烦,所以根据常用到的情况写了一个简便的combobox,再次记录下来,以免放在某个地方忘记了找不到了. 定 ...
- 嵌入式&iOS:回调函数(C)与block(OC)回调对比
学了OC的block,再写C的回调函数有点别扭,对比下区别,回忆记录下. C的回调函数: callBack.h 1).定义一个回调函数的参数数量.类型. typedef void (*CallBack ...
- ios 类似微信红点显示功能
设计思路:给UIView增加一个分类 所有的视图都可以根据需要来进行红点显示 #import <UIKit/UIKit.h> @interface UIView (CHRRedDot) @ ...