在我们关于高效代码审查的博文中,我们建议使用一个检查清单。在代码审查中,检查清单是一个非常好的工具——它们保证了审查可以在你的团队中始终如一的进行。它们也是一种保证常见问题能够被发现并被解决的便利方式。
软件工程学院的研究表明,程序员们会犯15-20种常见的错误。所以,通过把这些错误加入到检查清单当中,你可以确保不论什么时候,只要这些错误发生了,你就能发现它们,并且可以帮助你杜绝这些错误。
在我们关于高效代码审查的博文中,我们建议使用一个检查清单。在代码审查中,检查清单是一个非常好的工具——它们保证了审查可以在你的团队中始终如一的进行。它们也是一种保证常见问题能够被发现并被解决的便利方式。
软件工程学院的研究表明,程序员们会犯15-20种常见的错误。所以,通过把这些错误加入到检查清单当中,你可以确保不论什么时候,只要这些错误发生了,你就能发现它们,并且可以帮助你杜绝这些错误。
问题发生环境及表现:
1 | 编译器 (1.8.0_40) 中出现异常错误。 如果在 Bug Parade 中没有找到该错误, 请在 Java Developer Connection (http://java.sun.com/webapps/bugreport) 中建立 Bug。请在报告中附上您的程序和以下诊断信息。谢谢。 |
1 | FAILURE: Build failed with an exception. |
问题探索及解决方案:
/home/user/.bash_profile
或 /home/user/.bashrc
,因此 build.gradle
中 retrolambda 的配置无法获取正确的 JAVA8_HOME 路径。/home/user/.bash_profile
或 /home/user/.bashrc
中设置的环境变量/etc/profile
中添加 JAVA8_HOME本篇是谷歌是如何做代码审查的的续篇。
我们在谷歌所做事情中另外一个让我感到异常有效、有用的制度是严格的编码规范。
在到Google工作之前,我一直认为编码规范没有什么用处。我坚信这些规范都是官僚制度下产生的浪费大家的编程时间、影响人们开发效率的东西。
我是大错特错了。
在上一篇文章中提到过,我已经不在Google工作了。我还没有想清楚应该去哪里—有两三个非常好的工作机会摆在我面前。因为在这段做决定时间里,我不再受雇于任何人,我想可以写一些专业性的东西,一些很有趣,但也会在同事和管理工作中导致关系紧张的东西。
Google是一个非常优秀的公司。他们做出了很多令人称赞的东西—既是公司外部,人们可以看到的东西,也是公司内部。有一些在公司内部并不属于保密的事情,在外部并没有给予足够广泛的讨论。这就是我今天要说的。
这是一个“如有雷同,纯属巧合”的故事,外加一些废话,大家请勿对号入座。开始了……
我有些尴尬地拿着水杯,正对面坐着来访的王总,他是在别处打拼的人,这几年据说收获颇丰,见移动互联网如火如荼,自然也想着要进来干一场,尽管王总从事的行当也算跟IT沾边,但毕竟太长时间不接触技术,有些东西不太熟,总要咨询下我这个在一线开发混了十几年的老程序员,十几年的开发,有好几种可能性,不过这不是重点,所以暂时忽略掉这个细节吧。
补充一下Full Stack Developer的定义和标准:What is a Full Stack developer ?
Is it reasonable to expect mere morals to have mastery over every facet of the development stack? Probably not, but Facebook can ask for it. I was told at OSCON by a Facebook employee that they only hire ‘Full Stack’ developers. Well, what does that mean? To me, a Full Stack Developer is someone with familiarity in each layer, if not mastery in many and a genuine interest in all software technology…
以下是来自知乎网友顾鹏的答案,一个例子来说明怎样成为全栈工程师。
本节基于Android 构建系统概览和从 Android Studio 构建并运行来展示如何基于产品口味和构建类型来使用构建变种。
Android Studio 项目包含一个顶级的构建文件以及每个模块下的一个构建文件。构建文件名为 build.gradle
,他们是普通的文本文件,通过 Gradle 的 Android 插件提供的元素,使用 Groovy 语法来配置构建过程。大多数情况下,你只需要在模块层级上来编辑构建文件。例如在项目 BuildSystemExample
的 app 模块的构建文件看起来像这样:
Android 构建系统是一个用来构建、测试、运行和打包应用程序的工具箱。构建系统可以作为 Android Studio 菜单中的集成工具运行,也可以独立地从命令行运行。构建系统可以用来:
Android 构建系统的灵活性使得可以在不修改应用程序核心源文件的情况下实现这些目标。想要构建一个 Android Studio 项目,参见从 Android Studio 构建和运行。想要在 Android Studio 项目中配置自定义的构建设置,参见配置 Gradle 构建。