编程思想之——"人是活的,程序是死的"

"人是活的,程序是死的"这句话我时常提起,可能不少人不是很理解我为何会这样说,下面我就简单来谈谈我对这句话的理解。web

1.不要由于技术而技术,技术选型的初衷是需求。数据库

如今不少人在作项目的时候,开口就提项目用的NoSql、大数据处理、分布式系统等等技术。技术真的这么重要吗?api

技术在软件开发过程当中的地位是不言而喻的,可是一个项目选择合适的技术去实现是颇有必要,也是一个很好的学习机会。缓存

好比作一个简单的人事管理系统,简单的说就是对数据的添加、删除、修改。安全

可是随着NoSql的普及和运用,不少人在设计的时候可能会想用缓存能够减轻数据库压力,增长数据的读取速度等等优势。分布式

从设计图能够看出基本的设计,设计之初就想到NoSql的好处,可是不少问题都没有考虑到,好比:数据的同步策略、简单数据用NoSql效率真的比直接用数据库高,高好多等等问题?性能

因此说技术和需求是相辅相成的,单一的需求或者技术就是咩有意义的,那么在需求变动过程当中选择恰当的技术解决问题很重要、很重要?学习

2.作功能以前请不要先说效率,请先完成功能在进行优化效率。大数据

编码的运行效率直接影响到系统的运行速度是很是重要的,可是当你遇到一个问题的时候,一块儿讨论问题的时候。你是否最早想到的若是去解决问题,而不是看别人意见的缺点(这样效率高不高、影响性能高不高、安全性等问题)?优化

我这里不是说考虑这些很差,而是当你在想到一个比较的成熟的处理办法以后,你在去想这些问题。可能会有人提出质疑,这样作是否是太片面了、不利扩展性等等问题?是这边必须认可有这样的问题,可是一个功能都没有作出来,想这些问题有用?

好比在遇到webapi请求后,根据actionID去判断执行对应的fun时候

1.用if去完成

if(ActionID==1)
   functioin1();
else if(ActionID==2)
  functioin2();
else 
   functioin3();

可能就会有人说这样写,万一ActionID太多不利于扩展性,不够灵活。

2.好吧我换成swith

Swith(ActionID)
  case 1:
    Function1();
    break;
  case 2:
     Function2();
     break;
  default:
    break;

可能仍是会有上述的问题。

3.好吧我再换一种吧

Dictionary<int,Action> fun =new Dictionary<string,Action>():
fun.add(1,function1);
fun.add(2,function2);
fun.add(3,function3);
if (Fun.ContainsKey(protoid))
        Fun[protoid].Invoke();

可能会有说这样用影响性能啥的。

其实最后我只想说一句,这些方法你都用过,尝试过?晓得会影响扩展、安全、性能?若是真有,你有更好的解决办法?若是有更好,若是没有那么仍是建议你先一步一步的先去解决当前的问题,那么在考虑下一步的其余问题吧?

3.太过死板,不懂灵活。

当遇到一个问题的时候,一味的去新的方法或者新的东西上面去想办法,不能仔细的回看本身原来作过的东西是否能够修改/重用?

好比一个以下的简单div组装的TREE树形结构图

<div id=‘SF’>
    <div id='1001'>四川省<div>
<div>
<div id='SJ'>
    <div id='10010'>成都市<div>
<div>
<div id='SJ'>
    <div id='10011'>绵阳市<div>
<div>
<div id='SJ'>
    <div id='10012'>德阳市<div>
<div>

当知道一个市级的ID去查询省级的ID

不少人以为按照规范应该是根据市级DIV而后去查询父级的DIV而后在查询ID,这个方法可行的,可是若是树N多层数,不是须要查询父级的父级...

其实认真观察以后会发现每一个市级的ID 和父级ID 是有关系的,能够直接操做ID变化,组装父类ID,可是若是父类和子类没有关系...

一个div标签其实不但能够ID,还能够用其余属性表示其关系或者对应的ID,而后根据其余属性查询,可是可能在规范性会有点小问题...

在初始化的时候 ID 能够是 SJ+ID这样组合,而后切割ID就能够查询组装...

若是上述都不行,能够不用DIV组装用JqTree等等

这个例子其实就是想表达一个其实解决一个问题的办法多种多样,一种不行换一种,条条大路通罗马。

 

上述都是我的的认识和理解,仅仅表明我的观点,有更好观点欢迎斧正,谢谢!

相关文章
相关标签/搜索