zoukankan      html  css  js  c++  java
  • 自顶向下编程

    自顶向下编程

    代码的写作方式

    clean code: book review

    newspaper metaphor

    现在 代码的写作方式 是一个类似于写报纸的方式

    什么是类似于写报纸的方式???

    就是头版头条在最前面,后面才是细节,所有的代码就是要像新闻稿一样。最关键的东西

    最大的值在前面体现,不要写一些类似于散文的东西。

    同理

    在代码方面 就是最关键的函数写在最上面,其他的私有的函数和细节逻辑的子函数,就往文件的下面放,现代化的语言 函数放在什么地方都可以。

    自顶向下的编程方式是什么样子

    思考一个问题 最开始思考大层次的逻辑 不要纠结细节 以高层次 主干逻辑为主

    刚开始 不纠结里面的细节 而是把里面主干的逻辑全给写出来了。

    先把框架逻辑组织好,后续再来填这些各个功能代码。我的理解,写算法就像造人造房子( -> - >) 别想歪了,首先,就是要搭骨架,骨架搭好了,再去填充各个细节的代码。以后要有这种意识,在日常工作中写这些工程性的代码会更加的游刃有余。(业务代码的业务逻辑相对比较冗余繁复,冗余的逻辑一层层下来,写代码要写的快同时bug少的话,关键是要解决最上层的主干逻辑部分,类似上面,先用子函数的形式把它全部写好)

    class solution {
    	public boolean isPalindrome(String s) {
        // 高层次(主干逻辑)
        // 1. filter out number & char; 2. reverse and compare
        String filtereds = _filterNonNumberAndChar(s);
        String reversedS = _reverseString(filteredS);
        return reversedS.equalsIgnoreCase(filteredS);
      }
      private String _reverseString(String filteredS) {
        return null;
      }
      private String _filterNonNumberAndChar(String s) {
        return null;
      }
    }
    

    然后就是 (换我就是google reverseString 看 stackoverflow ,然后string remove, string filter alphanumeric)填各个功能代码。

    class solution {
    	public boolean isPalindrome(String s) {
          // 高层次(主干逻辑)
          // 1. filter out number & char; 2. reverse and compare
          String filteredS = _filterNonNumberAndChar(s);
          return _reverseString(filteredS).equalsIgnoreCase(filteredS);
        }
        private String _reverseString(String s) {
          return new StringBuilder(s).reverse().toString();
        }
        private String _filterNonNumberAndChar(String s) {
          return s.replaceAll("[^a-zA-Z0-9]", "");
        }
    }
    
  • 相关阅读:
    TiDB数据库05TiDB的用户管理与安全,文件与日志管理
    Java基础知识16Arrays、System常用方法使用
    TiDB数据库07TiDB集群管理(TiDB/TiKV/PD/TiFlash在线扩容与在线缩容)
    【转】在SQL Server中创建用户角色及授权(使用SQL语句)
    Javascript的IE和Firefox兼容问题
    JavaScript的私有变量
    JavaScript 中的内存泄露模式
    javascript内存泄漏问题
    全面理解javascript的caller,callee,call,apply概念(修改版)
    javascript跨域问题
  • 原文地址:https://www.cnblogs.com/ssaylo/p/12679251.html
Copyright © 2011-2022 走看看