浅析.NET设计架构十条箴言

开发 后端
本文将介绍.NET设计架构方面的知识,希望这十条箴言能帮助大家更好的做好.NET程序设计。

  这是看《Microsoft .NET Architecting Applications for the Enterprise 》书中摘记下来的,有必要经常提醒自己。

  箴言一——凡事无绝对

  凡事无绝对。作为架构师,你永远不会对任何事情有百分百的把握,你永远无法面面俱到。不过在这个位置上,你就必须评估所有的可选方案,并作出有足够预见性的正确决策。你需要为自己争取一些时间,以便慢慢思考,因此首先说“凡事无绝对”,然后解释为什么是这样,变数有哪些。若你还不确定有些变数,那么可以选用这个通用的回答——“这取决于上下文”。

  箴言2——需求是超越一切存在的

  架构仅仅是软件项目中一个自然的链接部分。客户将说出他们需要什么,若是客户吧清楚自己的需求,那么会有人引导直至得到明确的答案,这是分析师的职责。项目经理将为这个已经正式确定的项目安排基础设施。架构师会得到所有的需求,并为开发者提供设计。开发者将按照架构的意图开发。数据库管理员也会尽力让数据库能良好支持应用程序。你会认识到,客户位于这个链条的顶端,且客户的需求才是最重要的部分,客户所需要的东西叫做需求。当然,没有几个客户知道他自己真正需要的是什么,因此需求会不停地变化。

  箴言3——根据接口编程

  虽然我们是依靠最终实现代码来完成需求的,不过仍应该尽可能地使用接口。请牢记“没有接口的话就不要开始实现”这句话。仔细分析,你总会找到可以提取的接口。

  箴言4——保持简单,但不过与简单

  你应该听说过KISS(Keep It Simple,Stupid)原则,但这只是我们修改后的观点。简洁明了通常就意味着优秀。以简单为目标,不过要留有自己的底线。若是低于这个底线,那么你的解决方案将变得过于简单,这并不是一件好事。

  箴言5——继承是为了多态,不是重用

  面向对象编程(OOP)让我们仅编写一个类,然后不停地重用并根据需要扩展,这是依靠继承实现的。不过这就是类重用的全部吗?“重用”这个概念要比你第一眼看上去更加微妙。多态是面向对象编程的核心功能,意味着你可以互换地使用两个继承类。同时,有些人给出了总结:“虫咬是继承的一个附带功能。”不过重用不应该成为你的根本目标,换句话说,不要仅为了重用而使用继承。最好是编写一个新的类来满足需iqu,而不是继承某个原本不是完成此工作的现有类。

  箴言6——不要再非数据访问层中使用SQL

  牢记这一条:分离关注点。将数据访问代码和细节(例如,连接字符串、命令和数据表名)先放在一边。或早或晚你总会开始处理,不过不是在设计业务逻辑层和表现层时。如果可能请将持久化工作交给对象/关系映射(Object/Relational Mapper)等专门的工具处理。

  箴言7——首先考虑可维护性

  若你仅能为软件选择一个特性,那么应该如何选择呢?选择可伸缩性、安全性、性能,可测试性还是可用性?在我们看来,上述这些都不是最重要的,最重要的是可维护性。有了可维护性,上述所有特性都可以在日后实现。

  箴言8——所有的用户输入都是罪恶的

  你应该早已听过这种说法。“纸包不知火”,若是有某种途径让用户可以入侵,那么迟早会被用户发现。这似乎是墨菲法则,确实如此。

  箴言9——事后优化

  Donald Knuth曾说过,过早地优化时所有软件罪恶的根源。我们讲该说法更进一步——不要优化系统,而是让其设计尽可能地面对改进和扩展,仅在系统完成之后,再关注纯粹的优化。

  箴言10——在设计时考虑安全性和可测试性

  若你很在乎某个系统特性,那么在设计开始前就应该考虑到它。安全性和可测试性也是如此。甚至一个国际标准化组织(ISO)的规范也明确地阐述了这一点。

原文链接:http://www.cnblogs.com/xiaopan2010/archive/2011/07/27/2117825.html

【编辑推荐】

  1. 新手软件项目经理该如何入门
  2. 项目经理的力量应该从哪里来?
  3. 当你从程序员变为项目经理
  4. 软件测试项目为什么会失败
  5. 项目管理之CVS与SVN日常使用总结
责任编辑:彭凡 来源: 博客园
相关推荐

2022-09-09 16:27:09

微服务架构数据存储

2013-01-08 09:25:36

移动应用产品设计

2012-08-02 09:14:13

编程戒律

2012-05-15 01:38:18

编程编程技巧编程观点

2012-09-28 09:12:39

移动Web

2012-03-06 16:01:04

项目管理

2012-06-07 10:45:12

软件架构设计原则

2021-04-21 17:25:16

MySQL关系型数据库

2021-03-18 09:00:00

微服务架构工具

2011-04-14 11:43:47

2011-08-02 21:16:56

查询SQL性能优化

2024-02-19 14:50:42

编码原则软件开发

2010-08-02 10:23:44

服务器虚拟化

2009-01-15 09:57:00

2009-04-08 10:51:59

SQL优化经验

2023-09-22 12:04:53

Java代码

2020-08-23 21:07:16

编程PythonJava

2011-05-30 15:59:47

编程

2018-08-17 15:33:37

2010-06-22 10:00:31

SQL查询
点赞
收藏

51CTO技术栈公众号