编写s=1+2+3+...+n思路打破认知

简介: 最近在和领导讨论架构设计,其中涉及到如何通过代码来体现面向对象?通过一个例子来打破了原有的认知,以此总结记录自己的提升和成长

一、背景介绍


最近在和领导讨论架构设计,其中涉及到如何通过代码来体现面向对象?通过一个例子来打破了原有的认知,以此总结记录自己的提升和成长


二、思路&方案


  • 1.猛然想到的就是通过for循环,你是不是也想到了?(这种方式也称为迭代)


  • 2.面积公式(上底+下底)*高/2 (这种方式在编程里面是直接使用函数)


  • 3.通过F(x)=X + F(x-1) (这种方式也称为递归)


三、过程


1.for循环的代码简写如下


int s = 0;
for(int i=0;i<n;i++){
  s+=i;
}


1.1.面向过程的写法(注重如何做事情,最终把事情做完)

1.2.局部考虑问题(虽然把每个数变化的规律抽出来了,但是它是从头开始,依次累加的过程,至于要加到什么时候是不明确的;而从头这个事情也必须得是从1开始)


2.面积公式


ScriptEngine jse = new ScriptEngineManager().getEngineByName("JavaScript");
Object temp = jse.eval("(1+n)*n/2");


2.1.面向过程,通过函数的调用,直接将结果做了计算

2.2.全局考虑问题,将开始和结束做了整合,结合到了图形中(不过对于开始它还是一个死值)


3.递归方式


private int test(int s ,int n){
  //这里的判断可以抽取出去做成策略,以达到开始的动态
  if(n == 0){
    return n;
  }else{
    return test(s,n-1);
  }
  return s+n;
}


3.1.面向对象的写法(更考虑每一步由谁来提供,而不是怎么提供)

3.2.全局考虑问题,将开始和结尾都动态的考虑进去


四、总结


  • 1.面向过程是非常容易和直观的一种方式;如果你明确这段程序固定不变了(3-5年不会变化),那么这种方式将会让你的效率更高(例如:遥控器中的程序)


  • 2.面向对象是非常抽象的方式,需要极强的业务分析能力想象能力;这种方式相较于面向过程效率更低,但是扩展性更好、复用性更强


  • 3.全局观看待,不仅仅需要利用现有的资源,如果你还能创造出来资源那么你的胜算会更大,收获也会更丰富(一个东西的无用是因为放错了地方,一个资源的没看透是因为你还没找到更多的维度来看它)


  • 4.通过一个求和小例子,它背后体现的不仅仅是如何实现;更体现了思考与权衡的取舍


五、升华


  • 如果你的广度深度越强你将会拥有站到更远未来看现在的超级能力;


  • 不断突破自己的认知它会成就你做行业程序员级别提升;以及会帮助你持续做阶层跃迁。
相关文章
|
Oracle Java 关系型数据库
Java SpringBoot集成Activiti7工作流
Java SpringBoot集成Activiti7工作流
如何用宜搭1分钟搞定消息通知
消息通知是在流程表单发起编辑等阶段操作后或者设置定时规则定时通知指定人员的功能
3372 0
如何用宜搭1分钟搞定消息通知
|
安全 物联网 大数据
实名认证接口的应用场景和种类
互联网、大数据、云计算、物联网等相关技术的快速发展推动了互联网产业的进步,网络身份认证领域需要更多的实名认证系统技术支持,基于身份证、手机、银行卡信息的实名认证接口也应用于各种场景。
1187 0
实名认证接口的应用场景和种类
|
存储 监控 安全
数据人必知!认识数据“四种”分类“五大”价值,帮企业找到核心数据
在大数据时代,企业首先要做的是收集大量数据,但收集数据并非仅是把收集过来的数据放到数据存储平台里面那么简单,更重要的是对数据进行分类、加工及管理。
数据人必知!认识数据“四种”分类“五大”价值,帮企业找到核心数据
|
弹性计算
|
存储 XML 云计算
1.3云计算的基本特征|学习笔记
快速学习1.3云计算的基本特征
|
弹性计算 监控 网络协议
分析网络超时问题的最佳实践
对于云上的用户来说,业务日志里面报超时问题处理起来往往比价棘手,因为1) 问题点可能在云基础设施层,也有可能在业务软件层,需要排查的范围非常广;2) 这类问题往往是不可复现问题,抓到现场比较难。在本文里就分析下如何来分辨和排查这类问题的根本原因。
9016 1
分析网络超时问题的最佳实践
|
对象存储 C语言 编译器
Qt 连接阿里云oss的c语言SDK
这段时间利用Qt连接阿里的OSS一直没有成功,网上发现这个帖子https://www.cnblogs.com/huoqs/p/6407249.html中有详细的解释,按照他的操作步步骤来基本没有问题。
13854 0
|
Java API 开发工具
最新鲜最详细的Android SDK下载安装及配置教程
第一步、安装JDK; 第二步、安装Eclipse; 第三步、下载并安装AndroidSDK; 第四步、为Eclipse安装ADT插件   下面详细介绍。 第一步、安装JDK Android开发工具要求必须安装JDK(JavaDevelopment Kit),不能只安装JRE(Java Runtime Edition),在安装Android开发工具之前需要先安装JavaJDK。
3502 0
|
算法 大数据
阿里EB级大数据体系,如何做到秒级响应、高效赋能?
阿里巴巴如何构建一个从底层的数据采集、处理,到挖掘算法、应用、产品服务的全链路、标准化的大数据体系,使得超过EB级别的海量数据能够高效融合,并以秒级的响应速度,服务并驱动阿里巴巴的业务和外部千万用户的发展?阿里巴巴数据技术及产品部资深技术专家姚滨晖,在2017云栖大会上做了一次非常精彩的分享,今天我们一起来重温。
4404 0