架构师修练 I - 超级代码控
可实现的是架构,空谈是概念 So don't tell me the concepts show me the code! “不懂编码的架构师不是好架构师” 好架构师都是超级代码控。
代码是最好的老师
基本准备
- 设计模式 - 最标准的23种设计模式基本上要有一个了解,可能一下子不能理解他们的用法,但一定要记下他们的英文名字和基本的用途,如:Factory, Wrapper (Decorator), Command, Builder等 。
 - 语言规范 - 熟读语言本身的官方编码规范与命名规则,这是共同的标准,也是从官方得到写代码的第一指导。
 - 要看懂UML中对类的图形表示方法(类、接口、抽象类、继承关系、使用关系)
 
看代码的方法
看命名
- TagBuilder - 以Builder模式实现的Html标记的构建器
 - StringBuilder - 以Builder模式实现的字符串构造建器
 - XXXXWriter - 以构建器模式实现的各种写入器
 - ConnectionFactory - 数据库连接对象构造工厂
 
注:每一种基础语言会有自身的命名规则,所以必须对官方提供的命名规则烂熟于胸,既可以学习别人怎么写代码也可以规范自己的代码写法。
看接口
注:作为练习大家可以去下载我在NuGet上发布的一个名为 DotNetAge Document Storage 类库,里面就有Repository的实现
参考“最佳实践”
学
学习多种语言的动机
- 开拓视野,从不同语言中学习特有的设计理念
 - 寻找与更新自己的 “最佳实践”
 - 规避语言被淘汰的风险
 
开拓视野
我的论点是:不断学习各种语言,体验各种语言所带来的开发与设计的激情,开拓自我的视野才是一个架构师应走的路。架构师不单单是技术的选择者,而更应该是技术的整合者。
选择“最佳实践”
- ASP.NET 和 Java的思维方式与代码量差异不大,学习曲线最长、 Hosting 资源成本中等,但数据库Hosting成本高
 - Php 相对前两者简单而且资源众多,Hosting 资源最多,成本最低
 - NodeJS性能最高、学习曲线最短、代码量最少、资源也最多但Hosting 成本最高
 
成为 “O” 型架构师
学习多种语言的方法
- Delphi (1-5) (Object pascal) - 这是初恋 , 拥有最多的界面组件和最简单的可视化开发环境,VCL算是当时最好的选择。
 - VB (2-6) - 最容易调用COM的语言也是做面向对象很苦B的一个了。
 - C++ - 学得最差的
 - java - 用来学面向对象的
 - C# - 算是我最擅长的,也是做项目最多的
 - Php - 只能算是懂一点
 - javascript - 我最喜欢的动态弱类型语言。
 - css/less - 最让我头疼 (有了Less会好一点)
 - html/xml/xslt - 最容易建立方法论的标记性语言是最容易建立发散性思维与抽象思维的工具
 - Objective-C 和 Swift - 现在在学的
 
感性认知
相互印证
长年的积累
写 - 疯狂的编码
- 易读 - 命名是否符合代码规范,所有接口是否全部代码都有注释
 - 易用 - 每一个类,每一个方法都是架构师与程序员的UI,少参数,容易理解的设计可以大大减少沟通成本。
 - 框架化 - 一个一个类写是很慢的事,要活用模式于代码中能同时构建出10几个或几十个类。
 - 参考性 - 架构师不是程序员,写代码为的是固定核心功能与公共用法,便于成员开发。面对复杂的场景需要多写示例同时也是测试设计的易用性的方法。
 
- 为自己立项从现在起为自己而编码
 - 多写代码片 - 对局部的理论进行实践,多写一些小的代码片段或实验程序,而按正式项目一样来对待。完整的记录,共享源码获得Feedback,有良好的注释。
 - 模仿是学习与理解新事物的最佳捷径 — 可以去仿造某些项目,当深入其中可以更直接地理解设计者的最初设计想法,同时也可以得到一个仿造品(不是抄,仿造的目的是获得编码经验)
 - 尝试使用模式并控制类的规模
 
小结
架构师之路是一条很漫长而且需要不断学习、思考与实践积累的道路。我只是走了这条路的一小段,以此总结与更多的朋友分享共勉。在下一篇文章中我将会从另一个角度来谈架构师的修改项目:表达力。希望有兴趣的朋友能给予更多的关注与反馈。
架构师修练 I - 超级代码控的更多相关文章
- .NET 云原生架构师训练营(权限系统 代码实现 ActionAccess)--学习笔记
		
目录 开发任务 代码实现 开发任务 DotNetNB.Security.Core:定义 core,models,Istore:实现 default memory store DotNetNB.Secu ...
 - .NET 云原生架构师训练营(权限系统 代码实现 EntityAccess)--学习笔记
		
目录 开发任务 代码实现 开发任务 DotNetNB.Security.Core:定义 core,models,Istore:实现 default memory store DotNetNB.Secu ...
 - .NET 云原生架构师训练营(权限系统 代码实现 Store.EntityFramework)--学习笔记
		
目录 开发任务 代码实现 开发任务 DotNetNB.Security.Core:定义 core,models,Istore:实现 default memory store DotNetNB.Secu ...
 - .NET 云原生架构师训练营(权限系统 代码实现 Identity)--学习笔记
		
目录 开发任务 代码实现 开发任务 DotNetNB.Security.Core:定义 core,models,Istore:实现 default memory store DotNetNB.Secu ...
 - .NET 云原生架构师训练营(权限系统 代码实现 WebApplication)--学习笔记
		
目录 开发任务 代码实现 开发任务 DotNetNB.Security.Core:定义 core,models,Istore:实现 default memory store DotNetNB.WebA ...
 - .NET 云原生架构师训练营(权限系统 代码重构)--学习笔记
		
目录 模块拆分 代码重构 模块拆分 代码重构 AuthenticationController PermissionController IAuthorizationMiddlewareResultH ...
 - 架构师修炼 II - 表达思维与驾驭方法论
		
开篇之前我想先说说当年开发的那点事儿:大约10年前吧,我还是一个程序员的时候经常都是遇到这样的项目开发流程: 解决方案 :满足客户目的和投标用的一堆文档(不少还是互联网上抄的) ,是以Word为主的纯 ...
 - IT架构师介绍-软件架构设计学习第一天(非原创)
		
文章大纲 一.架构师定义二.架构师分类与具备能力三.研发人员发展的技术路线四.架构师知识体系五.参考文章 一.架构师定义 什么是架构师,这个聊架构话题时永恒的问题.每个公司对架构师的定位也有所 ...
 - iOS架构师之路:控制器(View Controller)瘦身设计
		
前言 古老的MVC架构是容易被iOS开发者理解和接受的设计模式,但是由于iOS开发的项目功能越来越负责庞大,项目代码也随之不断壮大,MVC的模糊定义导致我们的业务开发工程师很容易把大量的代码写到视图控 ...
 
随机推荐
- 适用于 Windows 的自定义脚本扩展
			
自定义脚本扩展在 Azure 虚拟机上下载并执行脚本. 此扩展适用于部署后配置.软件安装或其他任何配置/管理任务. 可以从 Azure 存储或 GitHub 下载脚本,或者在扩展运行时将脚本提供给 A ...
 - [POWERSHELL] [.net 3.5] [Windows Server] 在Windows Server上安装.NET3.5
			
Install-WindowsFeature Net-Framework-Core -source \\network\share\sxs
 - 转:jQuery插件开发全解析
			
jQuery插件的开发包括两种: 一种是类级别的插件开发,即给jQuery添加新的全局函数,相当于给jQuery类本身添加方法.jQuery的全局函数就是属于jQuery命名空间的函数,另一种是对象级 ...
 - orcl 如何快速删除表中百万或千万数据
			
orcl 数据库表中数据达到上千万时,已经变的特别慢了,所以时不时需要清掉一部分数据. bqh8表中目前有10000000条数据,需要保留19条数据,其余全部清除掉. 以下为个人方法: 1.首先把需要 ...
 - 事务的ACID性质
			
最近在读黄健宏的<Redis设计与实现>,现在看到了事务这章,由于之前(上学)没有好好整理过数据库事务的四大性质,导致现在(工作)看到了就和第一次知道一样((lll¬ω¬)).还是要把基础 ...
 - [Spark SQL_1] Spark SQL 配置
			
0. 说明 Spark SQL 的配置基于 Spark 集群搭建 && Hive 的安装&配置 1. 简介 Spark SQL 是构建在 Spark Core 模块之上的四大 ...
 - 【Weex学习】环境搭建
			
教程来源:http://jspang.com/2017/07/12/weex/,我本地是第一次安装Android Studio和教程有些出入 一.软件安装 1.安装Node.js 2.安装Java(h ...
 - laravel 实现思路以及各组件原理
			
laravel 内核是个IOC容器,IOC是把本来自己实例化的对象. 通过在容器里注册,通过容器来进行实例化. laravel队列用的是redis的列表来实现.
 - 基于Java反射的map自动装配JavaBean工具类设计
			
我们平时在用Myabtis时不是常常需要用map来传递参数,大体是如下的步骤: public List<Role> findRoles(Map<String,Object> p ...
 - laravel的Eloquent中的get()和Query/Builder中的get()
			
Eloquent 中的get实际上是Eloquent/Builder中的get,得到的结果是个Collection对象,再调用Collection的first才得到collection中的一项,即一个 ...