自顶向下编程
自顶向下编程
代码的写作方式
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]", "");
}
}