• 楊_宵夜
    2018-02-13
    Roger的留言, 本人不才, 想试着从"Control标准化"和"代码可重用"的角度来回答下:
    仔细看那个检查表单信息的例子, 叫做check_form_XXX(), 是针对特定的一个form的, 那么自然而然会有check_form_YYY()和check_form_ZZZ()等等...

    所以说, 这个form校验例子中,
    1. 最简单的Control部分就是遍历表单fields.
    2. 然后, 虽然是不同的field, 但相同的type是做相同逻辑的校验;
    3. 如果还想提供"将整个form拆成不同的part, 用并发来遍历"这种Control的话, 抽象出来的check_form()函数还可以提供并发的版本;

    那么单单是以上3点, 全部都是"可标准化"的, 并且"可重用"的, 并不影响<业务的logic>;

    那么, 当有了check_from()这个Control之后, 真正决定业务的<业务的logic>, 有:
    1. 每个field分别是什么type? 是text? 是password? 还是email?
    2. 每个field的最低长度是多少? 类似的还有每个field的最大长度?
    3. 等等...

    以上的问题, 决定了这个field通过校验的条件是什么?
    而这个条件是无法"标准化"的, 因为一个复杂系统的每个form的field不可能是一模一样的;
    所以这些"条件", 就由陈老师写出的DSL来提供;

    因此最后就变成了, check_form()提供一套"标准"来校验每个表单, 而每个表单只需要告诉check_form()说: "我有这些东西, 你帮我校验一下"; 而这样的说法, 又有了些委托模式的味道了;

    总而言之, 个人愚见: Control和Logic部分的一个肉眼可见的界线就是: 是否可以标准化??
    因本人较熟悉Java, 再扩展来说, 全局的工具类就是一种全局Control, 而一个类中的private方法大致可以认为是这个类中的Control. (仅为一种思路, 未经推敲);
    展开
    
     24
  • mingshun
    2018-05-18
    自从写业务的这几年来,做得最多的就是分离 Logic 和 Control。无论是编写新代码还是重构旧代码,都是从这个方向努力,目标是写出让团队里每个人都能轻松看得懂的代码。也用过许多语言,像 C、C++、Java、Golang、Lua、JS、Ruby、Elixir、Red……虽然思维模式和习惯玩法各异,但编程的本质是一样的。毕竟代码写出来是给人看的。如果人都很难看懂,又谈何优化和改进代码?!

    作者回复: 赞👍

    
     17
  • SamZhou
    2018-02-10
    是处理什么(logic),怎么做(control),沟通方式(数据结构)?
    
     11
  • vvsuperman
    2018-03-12
    有没推荐阅读,逻辑和控制的意思实在不太懂
    
     4
  • 又双叒叕是一年啊
    2019-06-20
    个人觉得 Data Structure 才是 What, Logic 是 do What , Control 是 how to do
    
     3
  • songgoogle
    2019-03-23
    如果做过保险业务的同学应该就会懂一点什么是控制逻辑什么是业务本身了,控制逻辑就如何从你下单到购买的流程,保险业务逻辑就是如何计算保费等等,个人的一点点理解
     1
     3
  • nanquanmama
    2018-02-08
    焕然大悟
    
     3
  • 业余爱好者
    2019-05-04
    逻辑和控制的区别让我想起了数据结构的逻辑结构和存储结构。业务逻辑不关心控制的实现,数据结构的逻辑结构同样不关心数据结构的存储结构(是为抽象数据类型)。前者是对后者的抽象,只关心问题是什么,而不太关心如何解决问题,前者是宏观,后者是微观,前者是业务,后者是实现。
    
     2
  • Roger
    2018-02-09
    还是不太明白 控制和逻辑的关系,检查表单的那个例子从我的理解来看已经是逻辑了。
    
     2
  • 帅广应s
    2018-02-08
    这段时间,正好在用python写一个从hive查数据,自动发邮件给运营产品的系统。借鉴了hadoop yarn的状态机后,整个逻辑结构清晰多了。但是也只是知道这样做可以解决问题,看了这篇文章后知道了为什么得这么做。感觉自己又上升了一个level ……
    
     2
  • edisonhuang
    2019-06-26
    程序=算法+数据结构
    算法=逻辑+控制
    如果将 Logic 和 Control 部分有效地分开,那么代码就会变得更容易改进和维护
    大部分混乱的代码就是把逻辑和控制混在一起了,导致难以阅读和维护。而逻辑才是我们真正要关心的问题,他解决了做什么。控制只是操作计算机的具体实现,解决了怎么做。二者关系就好像做正确的事和把事情做正确。其实我们真正关注的只是正确的事,这是战略层面,而把事情做正确是执行层面,有效解除二者的耦合是改善的重要一步
    
     1
  • caohuan
    2018-11-07
    看完 耗子哥的文章,我知道 为什么我还是一枚 码农了,代码 没有解耦,业务和控制代码 糅合在一起,虽然 我会一点 面向对象的 5大原则,也看过 重构的书籍,一直在模仿表层,没琢磨本质,所以 代码 既丑陋,可读性很差,知道有问题,得去提高了
    
     1
  • favorlm
    2018-05-05
    老师,您好,实际的编程工作中,我很想融合,但是发现处处都是方法,无法选择
    
     1
  • fsj
    2018-04-06
    逻辑和控制不太好理解,粗浅的觉得,控制是逻辑的实现,逻辑是唯一的,控制是多样的,以后再慢慢体会。
    通过检查表单的例子,学会一个技能,以后写业务逻辑,先思考能不能通过某种方式(比如DSL,状态机等)完整的表达逻辑,然后在写控制,尽量避免逻辑被分散在多个控制之中
    
     1
  • Chris
    2018-02-09
    理解并认识到编程的本质,才真正可能跳出代码搬运工的圈子,感谢老师!
    
     1
  • 恩言
    2018-02-08
    言不由衷的喜欢啊,真的好。
    
     1
  • slark
    2020-01-16
    通过采取一些措施将业务逻辑和控制分离,而控制是指业务逻辑运行的方式,是并行还是串行等。如果能将逻辑和控制分离代码将更清晰,比如say hello,业务是say,逻辑是循环say还是条件say。但在编码时候正确区分这两点也是需要仔细推敲的
    
    
  • 王璇
    2020-01-02
    还是没太理解 根据最后一个例子 我觉得大部分是把 输入和 实际操作分开?
    
    
  • 磉盘
    2019-09-24
    帮助我理解了mvc模式
    
    
  • wynying
    2019-09-02
    这一讲很受启发
    
    
我们在线,来聊聊吧