一起谈.NET技术,写出优雅简明代码的论题集 -- Csharp(C#)篇[2]

简介:   谢谢大家对本系列第一篇写出优雅简明代码的论题集 -- 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)) 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 ;
}

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

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

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

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

  未完待继…

目录
相关文章
|
11天前
|
SQL API 定位技术
基于C#使用winform技术的游戏平台的实现【C#课程设计】
本文介绍了基于C#使用WinForms技术开发的游戏平台项目,包括项目结构、运行截图、实现功能、部分代码说明、数据库设计和完整代码资源。项目涵盖了登录注册、个人信息修改、游戏商城列表查看、游戏管理、用户信息管理、数据分析等功能。代码示例包括ListView和ImageList的使用、图片上传、图表插件使用和SQL工具类封装,以及高德地图天气API的调用。
基于C#使用winform技术的游戏平台的实现【C#课程设计】
|
19天前
|
人工智能 前端开发 开发工具
解读.NET 技术的开发潜力
本文全面介绍了.NET技术在软件开发领域的核心优势、创新应用及面临的挑战。.NET以其统一的开发平台、强大的工具和跨平台能力,成为企业级应用、Web应用乃至游戏开发的理想选择。然而,在性能优化、容器化及AI集成等方面仍需不断突破。通过积极拥抱开源和社区驱动模式,.NET将持续推动软件开发的进步。
39 1
|
26天前
|
人工智能 前端开发 Devops
.NET技术自发布以来,在软件开发领域发挥了重要作用
【9月更文挑战第12天】.NET技术自发布以来,在软件开发领域发挥了重要作用。本文分为三部分探讨其在现代开发中的应用:首先介绍.NET的核心价值,包括语言多样性、强大的开发工具支持、丰富的类库、跨平台能力和活跃的社区;接着分析其在企业级应用、Web开发、移动应用、云服务及游戏开发中的实际应用;最后讨论.NET面临的挑战与未来趋势,如性能优化、容器化、AI集成及跨平台框架竞争等。通过不断的技术创新和社区驱动,.NET将持续推动软件开发的进步。
29 4
|
1月前
|
算法 Java 中间件
C#/.NET/.NET Core优质学习资料,干货收藏!
C#/.NET/.NET Core优质学习资料,干货收藏!
|
1月前
|
人工智能 开发框架 算法
C#/.NET/.NET Core技术前沿周刊 | 第 2 期(2024年8.19-8.25)
C#/.NET/.NET Core技术前沿周刊 | 第 2 期(2024年8.19-8.25)
|
1月前
|
缓存 开发框架 算法
C#/.NET这些实用的编程技巧你都会了吗?
C#/.NET这些实用的编程技巧你都会了吗?
|
1月前
|
传感器 应用服务中间件 Linux
C#/.NET/.NET Core技术前沿周刊 | 第 3 期(2024年8.26-8.31)
C#/.NET/.NET Core技术前沿周刊 | 第 3 期(2024年8.26-8.31)
|
1月前
|
JSON 测试技术 C#
C#/.NET/.NET Core优秀项目框架推荐榜单
C#/.NET/.NET Core优秀项目框架推荐榜单
|
1月前
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
28 7
|
29天前
|
存储 开发框架 前端开发
ASP.NET MVC 迅速集成 SignalR
ASP.NET MVC 迅速集成 SignalR
39 0