JavaRush /Java 博客 /Random-ZH /喝咖啡休息#83。杰出程序员的性格特征是什么?简单编程指南:函数和方法

喝咖啡休息#83。杰出程序员的性格特征是什么?简单编程指南:函数和方法

已在 Random-ZH 群组中发布

优秀程序员的性格特征是什么?

来源:Hackernoon 伟大的程序员与优秀的程序员有何区别?我发现了伟大的程序员共有的两个性格特征:一致和持久。这些特质本身并不是天才的标志,如果愿意,任何人都可以发展这些特质,然后将其应用到工作中。 喝咖啡休息#83。 杰出程序员的性格特征是什么? 简单编程指南:函数和方法 - 1

1. 保持一致

优秀的程序员不会偶尔编程。相反,他们有一个特定的时间表来在空闲时间(工作之前或之后以及周末)提高他们的知识和技能。例如,我认识的一位程序员将每天的前两个小时(每周六天)花在个人学习项目或任务上。这并不是说这些人昼夜不停地编写代码。他们和我们所有人一样,有时间处理自己的个人生活、义务和兴趣。但他们的观点是一致的:编程已经成为他们的习惯。你怎样才能变得一致?这就是我们许多人正在努力实现的目标。我发现有几种方法可以做到这一点。首先,确定每周可以花在编程上的小时数。这个数字就是您每周的“计划里程”。作为一名前长跑运动员,我每周跑一定的英里数。这是我每周的跑步。现在我有了我的编程经验:这是我每周花在编程上的小时数。大多数人都忽略了这个阶段。他们直接跳到他们想要完成的项目或他们想要研究的主题,而不考虑如何找到时间来做这件事。因此,他们晚上工作或每天工作 16 个小时。这种方法有一个问题:从长远来看是不可持续的。磨练你作为程序员的技能并不是你在一两周的忙碌中就能完成的事情。相反,你必须长期持续地努力。这就是为什么确定您的编程经验如此重要。为此,请考虑使用时间日志来查看您在何处以及如何度过时间。拿一张纸写下你每天做的所有事情以及做的时间,包括花五分钟查看社交媒体或电子邮件。这将使您更容易在日程中找到空闲时间。您甚至可能可以获得一些额外的时间做家务或看电视。然后,您可以创建一个需要坚持的编程培训计划。培训计划是保持一致性的最有效方法之一。它允许您提前分发所有详细信息。你所要做的就是每天把这个计划付诸行动。我的跑步训练计划概述了我每天需要跑多少英里以及需要跑多快。现在,我创建的编程锻炼计划具有相同的目的:它们告诉我每天需要做什么。一天结束时,我在电脑上打开 Evernote,制定第二天的日程安排。这是一个例子:
6:30 - 8:30 - 编程
  1. Python Anki 抽认卡复习(20 分钟)。
  2. 解决词云数据问题。
我在整个工作日都遵循这个过程:我指定我将花费在一项任务上的时间以及我想在这段时间内完成的任务。我还制定了每月培训计划。其中,我列出了我想要在下个月完成、学习或完成的三件事。我曾经制定季度计划。但后来我发现三个月的时间可以改变太多。每月计划可以让您有足够的时间在训练中采取重要步骤。

2. 坚持不懈

优秀程序员的第二个特质是坚持。他们研究解决问题的所有选项并找到答案。这似乎是秘密。我遇到的伟大程序员都具有分解问题并针对困难情况提出不同解决方案或解决方案的不可思议的能力。简而言之,他们有一个解决问题的系统。我在高中时从未有过解决方案系统。每当我在数学课上遇到问题时,我都会全速投入其中。然后当我开始编程时我继续这样做。没有计划。没有系统。没有时间思考。没有分析。不出所料,在这两种情况下,我都在不必要地打转,并且不断遇到障碍。我现在拥有一个解决问题的系统,可以帮助我分解问题以找到不同的选择。例如,我解决问题过程的第一步是陈述问题。这是第一个。一旦我理解了问题,我就会专注于以下每个步骤。
  • 分析输入数据和预期结果。
  • 创建动作算法。
  • 编写伪代码。
  • 解决问题的简化版本。
希望你能明白。这些阶段可能并不容易,但它们是可以管理的。通过解决难题,我们可以成为更好的人。这也灌输了信心。一旦我们解决了一个难题,我们就为新的难题做好了准备。

3.对待问题的态度?

在成为更好的程序员的道路上,我们还需要考虑其他一些事情:态度。您必须对问题和歧义采取新的方法。有一天,我向一位高级开发人员询问了一些我遇到的问题。我感到困惑和失望。起初,开发商也很困惑。然而,他的回答让我震惊。“哇,这是一个很酷的问题,”他说。他发现的细节激起了他的兴趣。这并不是说优秀的程序员也不会陷入某些问题。他们被困住了。但区别在于态度。那天我学到的教训是:优秀的程序员不害怕冒险进入未知领域。他们明白,通过研究这个问题,他们一定会学到新的东西。通过研究其他程序员,我们可以学到很多东西。但最终责任在于我们:我们需要每天开始工作并采取行动。

简单编程指南:函数和方法

来源:DZone 什么才是好的函数或方法?这需要多种因素的结合,每个因素都很重要。让我们看看其中四个最重要的。 喝咖啡休息#83。 杰出程序员的性格特征是什么? 简单编程指南:函数和方法 - 2

有意义的名字

函数应该有描述其目的或功能的名称。当函数有一个有意义的名称时,就很容易阅读和理解它的用途。例如,如果函数的目的是通过 ID 查找客户,则findCustomerById(id: String)可能是一个好的名称。另一个选择可能是findCustomer(id: String)。这里的函数签名意味着买家是通过他的 ID 找到的。“找到”一词还意味着可能会或可能不会找到买家。如果函数名称更改为getCustomer(id: String),则其含义会发生变化,因为它现在意味着不回滚;客户端要么被发现,要么函数失败并可能引发异常。这两个名称都是函数的有效名称,但具有不同的含义,因此它们的实现也必须不同。

参数尽可能少

我喜欢遵循三法则。这意味着该函数必须具有三个或更少的参数。当一个函数需要三个以上的参数时,应该重写它,并将参数放置在数据持有者中,例如它的类、数据类、JavaScript 对象等。这是减少应用程序中参数数量和组织数据的简单方法。我们以一个具有相同行为但不同签名的函数为例:
fun addCustomer(
  firstname: String,
  lastname: String,
  streetAddress: String,
  city: String,
  zipCode: String
)
这是另一种选择:
data class Address(
  val street: String,
  val city: String,
  val zipCode: String,
  val streetNumber: String
)

data class Customer(
  val firstname: String,
  val lastname: String,
  val address: Address
)

fun addCustomer(customer: Customer)

该函数执行预期的操作

函数必须执行预期的操作。不多也不少。如果函数名为findAddress(latitude, longitude),那么它应该找到给定坐标处的地址,或者,如果地址无法转换为坐标,则返回NonenullEmpty或任何适合给定语言的类型。该函数不应该执行任何其他操作,例如查找附近的地址或构建坐标记录。函数可能有副作用,例如日志记录或分析,但这些对于输入和输出来说是不可见的。

功能可以测试一下

功能必须经过设计才能进行测试。在前面的代码示例中,我定义了addCustomer函数,但没有定义任何返回类型,因此它的可测试性值得怀疑。当然,可以使用模拟或间谍进行测试,具体取决于内部实现,这可以通过简单地提供返回类型来实现:
fun addCustomer(customer: Customer): Customer
通过这个函数签名,我们可以将添加的客户端实体返回给被调用的组件。我们还可以检查该函数是否对该客户端对象执行了预期的操作(即为其分配唯一标识符)。
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION