程序员老鸟的一些经验之谈
深入Java开发之前,您需要了解的一切。
有许多工具,方法,环境和特性改变了你编写代码的方式,并且通常来说这些东西是你在学校期间没有遇到过的。 虽然它是你迈出了Java开发世界的第一步,但真正的学习实际上是发生在工作中的。
在接下来的文章中,我们将介绍一些你可以获取更多经验的关键因素。 这其中可能会包括一些哲学思想在里面。准备好你的笔记本,让我们一起回到在学校的时光。
恭喜,你即将疯狂
在学习如何编码时,我们面临的问题很纯粹:理解算法如何工作,确定要使用的合适的数据结构,并知道如何修复我们自己写的代码。 然而,现实世界有很多我们从来没有遇到过的新问题:调整你的代码以适应团队的编码标准,理解别人的代码,并找到附近最好的学习榜样。
我们写的第一行代码可能不同于第10000行,因为我们在开发过程中不断的学习和调整。 作为这个过程的一部分,我们可能会失败或迷惑,这是必然的,因为它是任何学习曲线的一部分。 但有一些事情我们可以提前准备,去尝试把我们将要面对的代码,DB或应用程序的破坏力最小化。
Write, Merge, Debug, Repeat
每个工程师都知道编码是工作的重要组成部分,但编码它也可能是工作中最简单的部分。真正的挑战是围绕编码的其它因素。 有许多关于编码之外的挑战主题,但我们决定专注于真正可以提前学习的事情,从下面的事情开始:
1、 Merging Files
这听起来可能是基本的能力,但这其中会出现各种问题。 你遇到的最常见的操作之一可能是合并。 它是将两个(或更多)开发历史,文本文件,数组或任何其他对象连接在一起的动作。 例如,提交一个完整的分支是相当简单的,但如果你只想提交该分支中的一部分呢? 但在你学会如何合并文件之前你最好想好如何面对别人的冷嘲热讽。 这就是为什么需要了解合并的过程中究竟发生了什么事如此重要的原因。必须要能够看到和理解代码,然后才提交。
你可以用手动方法查看文件究竟做了哪些修改,看看变动的代码可能会怎样影响已有的代码,或者你可以选择一个工具来帮助你发现代码的变更。 有很多工具,你可以使用,IntelliJ IDEA’s conflict resolution tool, KDiff3, Meld, Guiffy, Kompare 和其它工具。
2、 Understanding the Debugging Process
一旦你的代码公开了,被人使用了,或运行在你的开发环境,如何查看它是否真的按照预期工作呢? 这就需要查看调试信息,但为了使调试信息更有用,你需要关注你的日志
你可以选择下面的日志级别:
Trace – 最详细的信息
Debug – 写入日志文件的详细信息
Info – 运行时的事件信息,可以输出到控制台
Warning – 可能出现潜在问题的信息
Error – 不可预计的情况
Fatal – 严重错误
虽然有框架为你写这些消息,重要的是尽可能多的信息,以了解如何处理和解决不同的问题。
首先,你需要确定每个消息的正确级别。 例如,使用Debug记录在程序中发生的任何事情,以便在将代码发送到生产之前更好地调试代码并了解发生了什么。 使用信息来了解用户创建的操作,并使用警告来标记可能最终作为错误的事件,如果您想要跟踪他们当然。
其次确保您根据需要为您的日志提供尽可能多的信息。 当然,现在你知道这是什么意思:
public void doSomething() {
// your awesome code
logger.debug("Forgot the keys inside the car, BRB");
}
但是你必须考虑你的同事试图理解你的代码。 你不想让他们在你的假期问你什么车,你不想找到自己2年从今天想知道你在想什么,而写这个。 以你想要的方式处理你的代码 - 尽可能多的信息,所以其他人将知道如何处理它。
此外,如果你练习良好的日志技能,你必然会使每个人都这样做。
3、 Using Exceptions for Your Advantage
Java中有很多异常,最近我们发布了一些提示和见解的集合,用于处理大量的Java异常。但是如何在开发阶段为自己的好处使用例外呢?通过断点。
您可以手动为抛出的异常设置断点,并标记在开发中运行应用程序时执行应暂停的位置。每当执行断点时,将在调试器控制台中打印一条消息,并提供所需的相关信息。
它像一个为您的应用程序的暂停按钮,让您检查和看到到底发生了什么。有一些不同类型的断点,当你的应用程序到达某个特定的方法,类,变量或代码行时,它们会停止执行,所以你可以根据自己的需要进行游戏和测试。
另一方面,如果你正在寻找一个工具,它将帮助你知道你的代码在生产中什么时候,在哪里和为什么打断,你可以尝试OverOps。它是唯一的工具,为每个异常,记录的警告和错误显示整个调用堆栈的完整的源代码和变量状态。一探究竟。
4、 Handling a Production Environment
经过所有的艰苦努力,你已经部署了你的代码,它在生产中。 如果你写了有意义的日志消息,你将能够知道什么时候抛出异常,但有时会更难理解为什么它实际发生。
在转移到生产时,你必须记住的一件事是这种差距。 我们不是在谈论铁路乘客和火车,我们在谈论你的当地环境与生产。 这是许多错误的食谱,会浪费你的时间,试图找出他们来自哪里,为什么。
你需要了解为什么这些环境是不同的,以及如何处理这个差距。 如果你正在寻找一些高级Java调试技术,请查看这篇文章。 另一种为多个环境配置应用程序的方法可以使用Docker实现,您可以在这里阅读快速指南。
5、 Thinking About Future Teammates
我们为您提供了2个字:向后兼容性。 想象一下:你的机器上安装了Java 8,而生产运行的是Java 6,你不明白为什么会出现问题。 或者,也许有一个客户正在运行旧版本的应用程序,并且您的最新功能不适用于他们。 这是一个粘性的情况,可以很容易地避免。
你需要记住,每个团队都有一个过去,以及在你到达之前很久的决定的列表。 这就是为什么你必须考虑过去,以前进(我们说,我们将获得哲学,对吗?)。
在编写新代码时,花时间测试,识别并修复可能会破坏应用程序旧版本的任何内容。 它会帮助你一路上,并将使每个人都更开心,因为他们不必面对老的或甚至令人惊讶的bug,大型客户不愿意更新他们的应用程序版本。
What Else?
工作中最困难的部分是进入区域。我们现在谈论的不是咖啡的早晨提神起来杯,我们正在谈论的生产力黑客,这将提高您的工作和帮助你做到这一点甚至更好。
有很多东西你可以使用,如特殊的bash脚本,自制的命令行黑客,甚至特殊的工具,以帮助你更好地监控一切。 如果你正在寻找一些提示和技巧,请查看我们从Java社区收集的一些生产力提示。
Final Thoughts
最难的部分是开始。 无论是新工作的第一天,还是新的博客文章 - 在这个过程中有很多研究和学习。 不要害怕提出尽可能多的问题,因为这是了解团队,代码和应用程序如何工作的最好方法。
如果您对新员工有任何其他主要功能,您认为我们错过了,我们很乐意在下面的评论中听到他们的意见!
-----------------------------
看到这里还没过瘾,那么就来关注小编吧,我们一起报团取暖可好
小编还为大家准备了一些学习编程从入门到精通的学习资料,以及程序员面试,涉及到的绝大部分面试题及答案做成的文档和学习笔记文件,希望可以帮助到大家。
转发此文,关注并私信小编“学习”,即可马上领取,仅限300人哦