首页 > 编程知识 正文

华为的经验有什么成功和局限之处(阿里巴巴工作10年以上)

时间:2023-05-06 14:37:57 阅读:81999 作者:3836

在时间紧张、需求紧迫的时候,如果没有高效的方法,就会混乱,容易得到失败的结果。

因此,我喜欢对各个领域提出“方法论”这个词。

掌握一定的方法,才能条理清晰,脚踏实地,高效地完成所有的工作。

对于编程开发也是如此。

在开发过程中,经常会有各种各样的需求,由于各种各样的原因会产生各种各样的问题。

系统出现问题后,我们该如何有效地解决问题? 面试中不会审查这些,但和日常工作密不可分。

本文将介绍我总结的通过四个步骤有效解决编码问题的方法。

首先,本文介绍的方法不是笔者开始的,而是ttdyb的《How to Solve It》这个灵感。

这本书最早于1945年问世,已经销售了超过100万册。

本书提出的解决问题的方法已经被许多程序员和大学教授使用,通过本书介绍的方法,可以分四个阶段解决编码中遇到的许多问题。

本文提供了一个使用JavaScript作为实例语言的示例,并首先提出一个问题。

创建一个将两个数字相加并返回其值的函数

解决问题的方法分为四个步骤。

了解问题制定计划的执行计划的再现,回顾介绍下一步。

步骤1:了解问题

在面对需求时,很多同学首先想到的是赶紧进行编码,避免项目延期。

这是不可避免的,但有必要避免这种情况。

在开始解决问题之前,请先确认您真的理解了那个问题。

如果不充分理解问题,不仅在开发中变得模糊浪费时间,即使最终的需求应对有误差,结果也不理想,严重的情况下有时需要重新开发。

因此,需要充分理解问题,明确自己不理解的部分,让自己能够清楚地认识问题。

为了更好地理解问题,请问几个问题:

输入是什么?

问题的输入是什么? 在本文的示例中,输入函数作为参数。

从前面提出的问题可以看出,我们的输入是数字的。

但是,需要更全面地考虑。 我们可以问以下事情。

输入总是只有两个数字吗? 如果我们的函数收到三个数字作为输入怎么办?

由此,达成对问题更深入、更全面的认识。

输出是什么?

函数返回什么? 在这种情况下,输出将是一个数字。 这是两个数字输入的结果。

确保您真正了解输出结果。

一旦了解了问题,知道了可能的输入和输出,就可以开始处理一些具体的例子了。

创建用例

样品可以作为测试用例,作为稳定性、健全性检查使用。 另外,通过编写用例,可以提高自己对代码的理解。

从简单的例子或两个可能的输入和输出开始。 让我们返回加法函数。

函数称为add。

什么是样本输入? 输入示例如下:

//添加(2,3 ) )。

它的输出是什么? 要创建示例输出,请按如下方式创建:

//add (2,3 )--- 5

这表示函数输入2和3,并返回5作为其输出。

也可以通过创建更复杂的用例来寻找需要考虑的极端情况。 如果输入不是数字而是字符串怎么办?

2. 制定计划

其次,制定解决问题的计划。

设计计划时,可以用伪代码写。

伪码是算法步骤的简单语言描述。 也就是说,伪码是解决问题的重要组成部分。

写下解决问题所需的步骤。 关于这篇文章的问题,请写如下。

创建//sum变量。

使用加法运算符将第一个输入添加到第二个输入。

//将输入的2个值保存在sum变量中。

//将总和变量作为输出返回。

现在你有逐步解决这个问题的计划。

对于更复杂的问题,埃文斯教授指出:“系统地思考人类是如何解决问题的。”

也就是说,暂时不考虑如何通过代码解决问题,而是考虑如何通过人工解决,有助于更清楚地看到这些步骤。

3. 执行计划

问题解决战略的下一步是执行计划。

用你的伪代码作为指南,写下你真正的代码。

埃文斯教授建议把重点放在简单的解决方案上。

你的解决方案越简单,正确编程的可能性就越高。

拿着我们的伪代码,我们现在可以这样写了:

函数(a,b ) {

常数和=甲乙;

返回和;

}

请注意不要过早地进行优化。

也就是说,yxdjzg在实现需求的过程中说:“等等,我这样做。 这将导致效率低下的代码。 优化一下吧! 你可能会想。

首先,只需要获得简单的解决方案。 解决问题要全面考虑,而不是在实现过程中过分追求其中的一些优化。

Colt Steele在这里提供了很好的建议。 如果不能解决的一部分问题,请忽略绊倒部分的困难。

相反,请集中于可以开始创建的所有其他内容,并暂时忽略未知问题的困难部分。

这个部分结束后,请回到困难的部分。

s="pgc-h-arrow-right">4. 复盘回顾

解决方案开始运行后,请花点时间思考一下并找出如何进行改进。

这是你将解决方案重构为更有效的解决方案的时候了。

yxdjzg查看工作时,Colt Steele建议你提出一些问题,让自己思考如何改善解决方案:

还有哪些可行的其他方法?一眼就能理解吗?是否有意义?可以将结果或方法用于其他问题吗?可以提高解决方案的性能吗?能想到其他重构方法吗?别人如何解决这个问题?

针对前面的代码实现,我们可以重构问题以使代码更简洁的一种方法:删除变量并使用隐式返回:

function add(a, b) { return a + b; }

当我自己编码时,总是会看到比我提出的解决方案更优雅或更有效的解决方案。

因此,可以通过不断的阅读别人代码,或者让别人评审自己的代码,这样有助于提出更为有效的解决方案。

在本文中,我们讨论了解决编码问题的四步问题解决策略。

请记住,解决问题的技巧是使得任何人都可以随着时间和实践而变得更好的技能。


干货推荐

为了方便大家,我花费了半个月的时间把这几年来收集的各种技术干货整理到一起,其中内容包括但不限于Python、机器学习、深度学习、计算机视觉、推荐系统、Linux、工程化、Java,内容多达5T+,我把各个资源下载链接整理到一个文档内,目录如下:

所有干货送给大家,希望能够点赞支持一下!

https://http://pan.baidu.com/s/1eks7CUyjbWQ3A7O9cmYljA (提取码:0000)

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。