写出优雅简明代码的论题集 -- Csharp(C#)篇[2“.NET研究”]

简介:   谢谢大家对本系列第一篇写出优雅简明代码的论题集 -- Csharp(C#)篇[1]的回复和讨论,我相信针锋相对的辩论不仅有助于发现答案,更让我们了解问题后面的实质。  对程序员而言,我们的代码需要:  1. 在预算内实现需求,让用户可以使用 -- 让自己或者公司可以赚到钱  2. 方便自己修改及日后维护  3. 方便别人修改及日后维护  4. 便于重复使用,为以后的开发节省时间  5. 让系统高效的运作  从美国商学院毕业的学生们掌握了很多相似的思维模式,这不仅有利于他们解决问题,更重要的是方便他们彼此之间沟通。

  谢谢大家对本系列第一篇写出优雅简明代码的论题集 -- Csharp(C#)篇[1]的回复和讨论,我相信针锋相对的辩论不仅有助于发现答案,更让我们了解问题后面的实质。

  对程序员而言,我们的代码需要:

  1. 在预算内实现需求,让用户可以使用 -- 让自己或者公司可以赚到钱

  2. 方便自己修改及日后维护

  3. 方便别人修改及日后维护

  4. 便于重复使用,为以后的开发节省时间

  5. 让系统高效的运作

  从美国商学院毕业的学生们掌握了很多相似的思维模式,这不仅有利于他们解决问题,更重要的是方便他们彼此之间沟通。-- 换句话说,他们毕业后都安装上了相同的协议和一些可通用的接口,这样有一个基础平台可以让他们协同工作。

  论题七:命名规范

  也许有人认为没有必要再提这个问题,但在日常编码生活中,这的确是一个很重要的话题。

  7.1  类名、方法、常数使用Pascal casing

 
 
public class MyClass
{
const int DefaultNumber = 100 ;
public void MyMethod()
{ }
}

  7.2 局部变量,参数用camel casing

 
 
partial void OnContactIdChanging( int value)
{
int number;
}

  7.3 interface 名字以I 开头

  7.4 尽量不用单个字符命名变量,象 i 或者 t 。使用 index 或者 temp 之类代替。

  7.5 将所有来自framework 的 namespace 放在前面,而后再放第三方或自定义的:

 
 
using System;
using System.Linq;
using System.Data.Linq;
using System.Collections.Generic;
using System.Text;
using System.ComponentModel.DataAnnotations;
using CodeSmith.Data.Attributes;
using CodeSmith.Data.Rules;

  论题八: 一个方法的参数不能超过5个,当多于5个时,应进行函数的拆分或者参数的封装。-- 嚯嚯就像论题一样的规定

  一些说明:不是为了给自己一个紧箍咒,而是在日常编程中,我们发现如果你写的方法不满足这样一个条件,一年后,就算是你自己也不太想去维护和修改,如果换成是其他程序员会对此更加的头痛,对吗?

  论题九: 不要滥用注释,有些非常清晰明确的代码不需要注释

  仅在必要的时候注释你的代码,不要太多,并且注释也要简单给力。

  论题十: 不要把数值hard-code在代码中,使用const 来定义

  论题十一: 不要使用””, 使用string.Empty

  正确的:

 
 
string name = string .Empty;

  不建议:

 
 
string name = "" ;

  论题十二: 善于合并if

  观察下面这段可爱的代码:

 
 
public bool Equals(CommentData obj) {
上海企业网站设计与制作 if ( ! CommentId.Equals(obj.CommentId)) return false ;
if ( ! Comment.Equals(obj.Comment)) return false ;
if ( ! CommentorId.Equals(obj.CommentorId)) 上海企业网站制作an>return false;
return true;
}

  如果我们写成这样会不会好些呢:

 
 
public bool Equals(CommentData obj) {
return CommentId == obj.CommentId &&
Comment.Equals(obj.Comment)
&&
CommentorId
== obj.CommentorId;
}

  观察下面这段可爱的代码:

 
 
public bool Equals(CommentData obj) {
if ( ! CommentId.Equals(obj.CommentId)) return false ;
if ( ! Comment.Equals(obj.Comment)) return false ;
if ( ! CommentorId.Equals(obj.CommentorId)) return false ;
return true ;
}

  如果我们写成上海徐汇企业网站设计与制作:white;' href='http://www.93tj.com'>上海徐汇企业网站制作这样会不上海网站建设会好些呢:

 
 
public bool Equals(CommentData obj) {
return CommentId == obj.CommentId &&
Comment.Equals(obj.Comment)
&&
CommentorId
== obj.CommentorId;
}
上海闵行企业网站设计与制作

   论题十三: 不断重构你的代码

  当有新的需求或新改动的时候,可以拨一些时间来重构。 -- 你可能突然发现,原来重构后的代码可以如此美丽。使用一些重构的插件,比如resharper可以使你事半功倍。

  未完待继…

目录
相关文章
|
6月前
|
机器学习/深度学习 算法 定位技术
Baumer工业相机堡盟工业相机如何通过YoloV8深度学习模型实现裂缝的检测识别(C#代码UI界面版)
本项目基于YOLOv8模型与C#界面,结合Baumer工业相机,实现裂缝的高效检测识别。支持图像、视频及摄像头输入,具备高精度与实时性,适用于桥梁、路面、隧道等多种工业场景。
807 27
|
8月前
|
存储 算法 安全
如何控制上网行为——基于 C# 实现布隆过滤器算法的上网行为管控策略研究与实践解析
在数字化办公生态系统中,企业对员工网络行为的精细化管理已成为保障网络安全、提升组织效能的核心命题。如何在有效防范恶意网站访问、数据泄露风险的同时,避免过度管控对正常业务运作的负面影响,构成了企业网络安全领域的重要研究方向。在此背景下,数据结构与算法作为底层技术支撑,其重要性愈发凸显。本文将以布隆过滤器算法为研究对象,基于 C# 编程语言开展理论分析与工程实践,系统探讨该算法在企业上网行为管理中的应用范式。
248 8
|
8月前
|
存储 监控 算法
基于 C# 的局域网计算机监控系统文件变更实时监测算法设计与实现研究
本文介绍了一种基于C#语言的局域网文件变更监控算法,通过事件驱动与批处理机制结合,实现高效、低负载的文件系统实时监控。核心内容涵盖监控机制选择(如事件触发机制)、数据结构设计(如监控文件列表、事件队列)及批处理优化策略。文章详细解析了C#实现的核心代码,并提出性能优化与可靠性保障措施,包括批量处理、事件过滤和异步处理等技术。最后,探讨了该算法在企业数据安全监控、文件同步备份等场景的应用潜力,以及未来向智能化扩展的方向,如文件内容分析、智能告警机制和分布式监控架构。
226 3
|
8月前
|
存储 监控 算法
局域网上网记录监控的 C# 基数树算法高效检索方案研究
在企业网络管理与信息安全领域,局域网上网记录监控是维护网络安全、规范网络行为的关键举措。随着企业网络数据量呈指数级增长,如何高效存储和检索上网记录数据成为亟待解决的核心问题。基数树(Trie 树)作为一种独特的数据结构,凭借其在字符串处理方面的卓越性能,为局域网上网记录监控提供了创新的解决方案。本文将深入剖析基数树算法的原理,并通过 C# 语言实现的代码示例,阐述其在局域网上网记录监控场景中的具体应用。
194 7
|
9月前
|
SQL 小程序 API
如何运用C#.NET技术快速开发一套掌上医院系统?
本方案基于C#.NET技术快速构建掌上医院系统,结合模块化开发理念与医院信息化需求。核心功能涵盖用户端的预约挂号、在线问诊、报告查询等,以及管理端的排班管理和数据统计。采用.NET Core Web API与uni-app实现前后端分离,支持跨平台小程序开发。数据库选用SQL Server 2012,并通过读写分离与索引优化提升性能。部署方案包括Windows Server与负载均衡设计,确保高可用性。同时针对API差异、数据库老化及高并发等问题制定应对措施,保障系统稳定运行。推荐使用Postman、Redgate等工具辅助开发,提升效率与质量。
378 0
|
开发框架 搜索推荐 算法
一个包含了 50+ C#/.NET编程技巧实战练习教程
一个包含了 50+ C#/.NET编程技巧实战练习教程
384 18
|
11月前
|
人工智能 机器人
D1net阅闻 | 谷歌DeepMind研究发现LLM新特性
D1net阅闻 | 谷歌DeepMind研究发现LLM新特性
|
算法 Java 测试技术
使用 BenchmarkDotNet 对 .NET 代码进行性能基准测试
使用 BenchmarkDotNet 对 .NET 代码进行性能基准测试
346 13
|
缓存 算法 安全
精选10款C#/.NET开发必备类库(含使用教程),工作效率提升利器!
精选10款C#/.NET开发必备类库(含使用教程),工作效率提升利器!
479 12
|
开发框架 人工智能 .NET
C#/.NET/.NET Core拾遗补漏合集(24年12月更新)
C#/.NET/.NET Core拾遗补漏合集(24年12月更新)
205 6