编程思想之——"人是活的,程序是死的"
"人是活的,程序是死的"这句话我时常提起,可能很多人不是很理解我为什么会这样说,下面我就简单来谈谈我对这句话的理解。
1.不要因为技术而技术,技术选型的初衷是需求。
现在很多人在做项目的时候,开口就提项目用的NoSql、大数据处理、分布式系统等等技术。技术真的这么重要吗?
技术在软件开发过程中的地位是不言而喻的,但是一个项目选择合适的技术去实现是很有必要,也是一个很好的学习机会。
比如做一个简单的人事管理系统,简单的说就是对数据的添加、删除、修改。
但是随着NoSql的普及和运用,很多人在设计的时候可能会想用缓存可以减轻数据库压力,增加数据的读取速度等等优点。
从设计图可以看出基本的设计,设计之初就想到NoSql的好处,但是很多问题都没有考虑到,比如:数据的同步策略、简单数据用NoSql效率真的比直接用数据库高,高好多等等问题?
所以说技术和需求是相辅相成的,单一的需求或者技术就是咩有意义的,那么在需求变更过程中选择恰当的技术解决问题很重要、很重要?
2.做功能之前请不要先说效率,请先完成功能在进行优化效率。
编码的运行效率直接影响到系统的运行速度是非常重要的,但是当你遇到一个问题的时候,一起讨论问题的时候。你是否最先想到的如果去解决问题,而不是看别人意见的缺点(这样效率高不高、影响性能高不高、安全性等问题)?
我这里不是说考虑这些不好,而是当你在想到一个比较的成熟的处理办法之后,你在去想这些问题。可能会有人提出质疑,这样做是不是太片面了、不利扩展性等等问题?是这边必须承认有这样的问题,但是一个功能都没有做出来,想这些问题有用?
比如在遇到webapi请求后,根据actionID去判断执行对应的fun时候
1.用if去完成
if(ActionID==)
functioin1();
else if(ActionID==)
functioin2();
else
functioin3();
可能就会有人说这样写,万一ActionID太多不利于扩展性,不够灵活。
2.好吧我换成swith
Swith(ActionID)
case :
Function1();
break;
case :
Function2();
break;
default:
break;
可能还是会有上述的问题。
3.好吧我再换一种吧
Dictionary<int,Action> fun =new Dictionary<string,Action>():
fun.add(,function1);
fun.add(,function2);
fun.add(,function3);
if (Fun.ContainsKey(protoid))
Fun[protoid].Invoke();
可能会有说这样用影响性能啥的。
其实最后我只想说一句,这些方法你都用过,尝试过?晓得会影响扩展、安全、性能?如果真有,你有更好的解决办法?如果有更好,如果没有那么还是建议你先一步一步的先去解决当前的问题,那么在考虑下一步的其他问题吧?
3.太过死板,不懂灵活。
当遇到一个问题的时候,一味的去新的方法或者新的东西上面去想办法,不能仔细的回看自己原来做过的东西是否可以修改/重用?
比如一个如下的简单div组装的TREE树形结构图
<div id=‘SF’>
<div id=''>四川省<div>
<div>
<div id='SJ'>
<div id=''>成都市<div>
<div>
<div id='SJ'>
<div id=''>绵阳市<div>
<div>
<div id='SJ'>
<div id=''>德阳市<div>
<div>
当知道一个市级的ID去查询省级的ID
很多人觉得按照规范应该是根据市级DIV然后去查询父级的DIV然后在查询ID,这个方法可行的,但是如果树N多层数,不是需要查询父级的父级...
其实认真观察之后会发现每个市级的ID 和父级ID 是有关系的,可以直接操作ID变化,组装父类ID,但是如果父类和子类没有关系...
一个div标签其实不但可以ID,还可以用其他属性表示其关系或者对应的ID,然后根据其他属性查询,但是可能在规范性会有点小问题...
在初始化的时候 ID 可以是 SJ+ID这样组合,然后切割ID就可以查询组装...
如果上述都不行,可以不用DIV组装用JqTree等等
这个例子其实就是想表达一个其实解决一个问题的办法多种多样,一种不行换一种,条条大路通罗马。
上述都是个人的认识和理解,仅仅代表个人观点,有更好观点欢迎斧正,谢谢!
编程思想之——"人是活的,程序是死的"的更多相关文章
- IT第二十天 - 面向对象编程思想、抽象类、异常处理、程序操作日志记录、本周总结 ★★★
IT第二十天 上午 面向对象编程思想 1.组装电脑的设计: (1)电脑的组成:显示器+机箱 (2)机箱的组成:电源+主板+硬盘 (3)主板所包含的部件:cpu+内存+PCI接口+usb接口 (4)PC ...
- Java编程思想(后)
Java编程思想(后) 持有对象 如果一个程序只包含固定数量的且其生命期都是已知的对象,那么这是一个非常简单的程序. Java中的库基本类型: List, Set, Queue和Map --- 称为集 ...
- 从裸机编程到嵌入式Linux编程思想的转变------分而治之:驱动和应用程序
笔者学习嵌入式Linux也有一段时间了,很奇怪的是很多书讲驱动编程方面的知识,也有很多书将ARM9方面的知识,但是从以前51形式的(对寄存器直接操作,初始化芯片的功能模块)编程方法,和思维模式,变换为 ...
- Java程序员的日常——《编程思想》一切都是对象
今天终于看完了第一章,哈哈,万事开头难....刚开始被编程思想的第一章给蒙住了,讲一堆理论,没什么意思.从第二章开始,真正的开始讲解Java相关的内容,有了一定的开发经验后,再次阅读起来,感觉收获良多 ...
- 嵌入式linux驱动开发之点亮led(驱动编程思想之初体验)
这节我们就开始开始进行实战啦!这里顺便说一下啊,出来做开发的基础很重要啊,基础不好,迟早是要恶补的.个人深刻觉得像这种嵌入式的开发对C语言和微机接口与原理是非常依赖的,必须要有深厚的基础才能hold的 ...
- 驱动编程思想之初体验 --------------- 嵌入式linux驱动开发之点亮LED
这节我们就开始开始进行实战啦!这里顺便说一下啊,出来做开发的基础很重要啊,基础不好,迟早是要恶补的.个人深刻觉得像这种嵌入式的开发对C语言和微机接口与原理是非常依赖的,必须要有深厚的基础才能hold的 ...
- [Java编程思想-学习笔记]第3章 操作符
3.1 更简单的打印语句 学习编程语言的通许遇到的第一个程序无非打印"Hello, world"了,然而在Java中要写成 System.out.println("He ...
- [Java编程思想-学习笔记]第1章 对象导论
1.1 抽象过程 Java是一门面向对象的语言,它的一个优点在于只针对待解问题抽象,而不用为具体的计算机结构而烦心,这使得Java有完美的移植性,也即Java的口号"Write Once, ...
- Java编程思想重点笔记(Java开发必看)
Java编程思想重点笔记(Java开发必看) Java编程思想,Java学习必读经典,不管是初学者还是大牛都值得一读,这里总结书中的重点知识,这些知识不仅经常出现在各大知名公司的笔试面试过程中,而 ...
随机推荐
- jmeter+ant+jenkins+mac使用HTML Publisher插件后查看html报告显示不正常
Jenkins安全默认将以下功能关闭: 1.javascript2.html上的内置插件3.内置css或从其它站的css4.从其它站的图处5.AJAX 报告中有javascript,所以显示异常.解决 ...
- gridview里item是textView、Button单击事件相应,以及按下效果的取去除
1.响应事件的区别: gridview的item是textView的时候,gridview的itemonclick事件可以正常相应,但是换了Button后不能,原因如下: public class B ...
- Python3基础 使用for循环 删除一个列表中的重复项
镇场诗: 诚听如来语,顿舍世间名与利.愿做地藏徒,广演是经阎浮提. 愿尽吾所学,成就一良心博客.愿诸后来人,重现智慧清净体.-------------------------------------- ...
- tomcat 修改端口(Java之负基础实战)
1.找到server.xml tomcat 安装路径/config/server.xml 2.搜索8080 修改成想要的端口号 3.重启tomcat
- DBGrid 各属性的设置
在 Delphi 语言的数据库编程中,DBGrid 是显示数据的主要手段之一.但是 DBGrid 缺省的外观未免显得单调和缺乏创意.其实,我们完全可以在我们的程序中通过编程来达到美化DBGrid 外观 ...
- --@angularJS--模板加载之缓存模板demo
不用缓存模板的写法如下: 1.index.html: <!DOCTYPE HTML><html ng-app="app"><head> & ...
- C#与Java互通AES算法加密解密
/// <summary>AES加密</summary> /// <param name="text">明文</param> /// ...
- swift Alamofire请求数据与SwiftJson解析
一直在研究swift 程序最重要的是什么???答案当然是数据啦. 数据对一个程序的影响有多大自己想去吧!!!如果你非要说不重要,那你现在就可以关网页了 哈哈哈哈哈 我呢 swift新手 菜鸟一 ...
- WPF dataGrid中的check的改变事件
关于datagrid信息: <DataGridTemplateColumn Header="备注"> <DataGridTemplateColumn.CellTe ...
- springmvc java.lang.NoSuchMethodError: com.fasterxml.jackson.core.JsonFactory.requiresPropertyOrdering()Z
在hibernate spring springMVC整合的时候出现下面的情况: WARNING: Exception encountered during context initializatio ...