架构师修练 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的模糊定义导致我们的业务开发工程师很容易把大量的代码写到视图控 ...
随机推荐
- Json 操作
Json简介: JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式.它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集 ...
- ASP.NET动态引用样式表(css)和脚本(js)文件
// 引入js文件 HtmlGenericControl scriptControl = new HtmlGenericControl("script"); scriptContr ...
- Windows 常识大全【all】
解决电脑卡顿问题 电脑常见技巧大全 电脑运行命令CMD集锦 开启Windows 7系统的“上帝模式” Win7下设置护眼的电脑豆沙绿界面 零基础如何组装电脑?装机之家手把手教您电脑组装教程图解 [Ex ...
- pychram使用技巧
1.代码添加断点 点击对应行代码,按ctrl+F8,即可添加断点 2.查看内置函数的源码 点击对应函数后按crtl+B
- Orange Pi 3 GPIO 笔记
这是我写过的最水的文章 设备:Orange pi H6,Pi 3 引脚图: (使用Wiringpi 查看GPIO) +------+-----+----------+------+---+Orange ...
- 8.1Solr API使用(分页,高亮)
转载请出自出处:http://www.cnblogs.com/hd3013779515/ 一.Solr Deep Paging(深分页) 长期以来,我们一直有一个深分页问题.如果直接跳到很靠后的页数, ...
- python第二十八课——编码小常识
2.内存和硬盘: 内存:计算机硬件组成部分之一,它是一个容器,用来存储数据:处理数据速度快, 存储数据量小:断电死机数据会丢失,短暂性存储数据 硬盘:计算机硬件组成部分之一,它是一个容器,用来存储数据 ...
- BZOJ5415:[NOI2018]归程(可持久化并查集,最短路)
Description Input Output Sample Input1 14 31 2 50 12 3 100 23 4 50 15 0 23 02 14 13 13 2 Sample Outp ...
- POJ3801 Crazy Circuits
嘟嘟嘟 上下界网络流之最小流. 建图不说啦,裸的. 在有附加源\(S\)和附加汇\(T\)的图上跑完后,删除和\(S, T\)相连的边.然后因为可能流多了,所以现在应该退流,于是我们从\(t\)到\( ...
- PHP(Mysql/Redis)消息队列的介绍及应用场景案例--转载
郑重提示:本博客转载自好友博客,个人觉得写的很牛逼所以未经同意强行转载,原博客连接 http://www.cnblogs.com/wt645631686/p/8243438.html 欢迎访问 在进行 ...