加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

谷歌程序员有哪些高效的编程习惯?

发布时间:2019-04-22 04:32:50 所属栏目:建站 来源:medium 编译:高延、蒋宝尚 谷歌招聘程序员的难度众所周
导读:大数据文摘出品 来历:medium 编译:高延、蒋宝尚 谷歌雇用措施员的难度众所周知,不只要求措施员码力超强,还要求有精采的编程风俗。 那么他们在写代码的进程中,有哪些很是难堪值得我们小心的套路呢。 本文作者是谷歌的软件工程师Steve Merritt,下面他
副问题[/!--empirenews.page--]

谷歌措施员有哪些高效的编程风俗?

大数据文摘出品

来历:medium

编译:高延、蒋宝尚

谷歌雇用措施员的难度众所周知,不只要求措施员码力超强,还要求有精采的编程风俗。

那么他们在写代码的进程中,有哪些很是难堪值得我们小心的套路呢。

本文作者是谷歌的软件工程师Steve Merritt,下面他将先容其在谷歌的一般事变及与各类level的措施员(培训生、大门生、演习生)的相助中城市用到的一些小能力。

举个例子来声名这个流程。

假设有个题目:给定两个字符串sourceString和searchString,假如sourceString中含有searchString,就返回第一个字符在sourceString中的索引。假如sourceString中没有searchString,就返回-1。

先画个图

坦白地说,立即就去敲代码是种谬妄且懒惰的设法。就比如在你写一篇文章之前,要先弄清晰你的假设及论据,从而担保文章的内容故意义。不这么做的话,你也许会徐徐意识到你所写内容也许会跑题,不只挥霍时刻,还影响神色。写代码也一样,当时你也许像眼睛里进了洗发水一样难熬。

凡是,办理题目的要领乍一看很简朴,但着实否则。先在纸上写写有助于你找到办理题目的要领,并能证实该要领可用于差异情境,这些都得在敲代码之前完成。

以是不要急于敲代码,乃至想都不要想代码。随后你是有足够的时刻来做加分号、逗号这些事的。

画个图吧,画上箭头,或在框里写上数字,横竖,用尽一些可以帮你描写题目的要领。我们的方针是办理题目,以是不要范围于键盘,请随便行使你的纸笔。

先计一律些简朴输入。假如函数要处理赏罚的是一个字符串,那abc就是个很好的例子。试想一下正确的功效是什么,然后梳理一下你是怎样办理这个题目的,以及用到了哪些步调。

假设字符串的值如下:

  1. sourceString: "abcdyesefgh" 
  2. searchString: "yes" 

我的思绪:我能看出searchString 包括于sourceString中。但我是怎样做到的呢?对sourceString从左读到最右,每3个字符一组和‘yes’举办比对看是否匹配。

如‘abc’‘bcd’‘cde’等。当读到索引为4的字符时,发明白‘yes’,这样我就确定存在这么一个匹配,且始于索引为4的字符

当我们在写算法时,我们必要确保我们能表达出全部内容并能应对全部也许的场景。在找到匹配的时辰理应返回正确的谜底,在没找到匹配的时辰也要放回正确的谜底。

试想一下另一对字符串的景象:

  1. sourceString: "abcdyefg" 
  2. searchString: "yes" 

我们把sourceString 这个单词从左往右读,每3个字符一组地比对是否和‘yes’匹配。读到索引为4的字符是,我们看到‘yef’,这看起来像是一样的,但并不是,由于第三个字符差异。以是,我们一向读到最右边,得出的结论是没有匹配,以是返回-1。

我们已经能确定办理该题目必要的一系列步调(在编程规模,我们称之为算法),而且我们已经差异情境中举办都实行并都获得正确的功效。基于这点,我们就以为该算法是有用的,接下来我们就该将它算法化。

用笔墨写出来

当真思索上一步中确定的算法后,我们就可以试着用笔墨把它写出来。

这么做能使得步调变得很详细,以便我们在后续敲代码的时辰举办参考。

从字符串的首位开始读。

  • 查察由3个字符(或是searchString中的字符数)构成的子集。
  • 假如呈现和searchString同等的,就返回其字母的索引号。
  • 假如我们读到字符串末端都没有能匹配的,就返回-1。

写伪代码

伪代码并不是真实的代码,可是它和代码布局相仿。下述是我上文算法的伪代码:

  1. for each index in sourceString, 
  2.     there are N characters in searchString 
  3.     let N chars from index onward be called POSSIBLE_MATCH 
  4.     if POSSIBLE_MATCH is equal to searchString, return index 
  5. at the end, if we haven't found a match yet, return -1. 

这样写就更像真实代码了:

  1. for each index in sourceString, 
  2.     N = searchString.length 
  3.     POSSIBLE_MATCH = sourceString[index to index+N] 
  4.      if POSSIBLE_MATCH === searchString: 
  5.         return index 
  6. return -1 

伪代码和真实代码的相似度取决于你,通过恒久实践你会找到最得当你的一种情势

转化为代码

提醒:假如题目较量简朴,你也可以一并完成上述步调

这下我们必要开始思量语法、函数参数及说话类型了。你或者不能一下就把代码写的很全面,不要紧,先写下你会的。

  1. function findFirstMatch(searchString, sourceString) { 
  2.     let length = searchString.length; 
  3.     for (let index = 0; index < sourceString.length; index++) { 
  4.         let possibleMatch = <the LENGTH chars starting at index i> 
  5.         if (possibleMatch === searchString) { 
  6.             return index; 
  7.         } 
  8.     } 
  9.     return -1; 

你会发明上述代码中我留空了一部门。我是存心的,由于我不确定在JavaScript说话中给字符串切片的语法,以是我会在下一步中查询该语法。

不要猜

我发明新手措施员常范这样一个错误,就是在网上找到一些认为也许有效语句,不经测试便将其加到措施中。你不领略的代码段越多,就越不行能找到得当的办理方案。

跟着你不确定的内容增进,你的措施堕落的方法会呈指数式增进。当你有1处不确定的时辰,你措施确实只会由于这1个缘故起因而堕落。

可是假若有2处不确定,堕落就有3种环境(A处堕落,B处堕落,可能AB都堕落)。假若有3处不确定,就有7种环境。到时你就很难找到堕落缘故起因了。

附注:措施堕落缘故起因的个数如梅森序列:a(n) = (2^n) — 1

先测试一下你的新代码。能在互联网上找有效的内容是很好的,可是请在将其加到措施中之前,用一个独立的情形举办测试,以确保它能以你以为的方法运行。

在上一步中,由于不确定在JavaScript说话里选取字符串某个部门的方法,以是就上网搜一下。

参考如下链接:

https://www.google.com/search?q=how+to+select+part+of+a+string+in+javascript

第一个功效就是w3schools网站的,固然内容有点老,可是凡是是靠谱。

w3schools:https://www.w3schools.com/jsref/jsref_substr.asp

在这基本上,假设我每次用这段代码

  1. substr(index, searchString.length) 

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读