是否应该强迫开发人员记住细节?[关闭]


33

很多次我忘记了有关我的应用程序的事情。我不记住表名或查询的内容,而是搜索得到想要的东西。我的团队负责人告诉我,我应该记住我使用的表名。

开发人员是否需要记住数据库中的表名,类名等?如果答案是“一直是”,我该怎么做才能记住那些事情?


27
我希望我能忘记他们。
JeffO 2011年

6
告诉他他应该用左手写字(这对某些人来说非常容易,而对另一些人来说则非常困难)。
Job

4
“必须记住表名” WTF !?“每个人都必须在一周结束时学会这万种列名称!然后会有一个测试;没有得到100%的任何人将首先被强迫喂食我狂暴的狮子的私人骄傲!!!Bwahahahahaa !!!!!”
Donal Fellows

4
当我是一个合作学生时,我和一个要求我确切要求的人一起工作,当我抬起头来告诉我时,我在“浪费时间”,说:“你说你一直在学习!” 当我无法从内存中背诵表名(及其内容),并以缺乏记忆表名的承诺为借口而不再完全指导我时。我在合作报告中对他进行了抨击。
user16764 2011年

2
不要记住,记住。
tylermac 2011年

Answers:


63

您无需明确记住这些内容。我的意思是坐下来学习它们,就像您要进行拼写测试的单词列表一样。在第一种情况下,名称应易于记忆发现,以便您无需花费太多精力即可再次找到它们。

您还应该可以使用一些工具来帮助您完成自动完成等工作。

在一个由100多个表组成的大型系统中,您无法真正记住每个表名和每个列名,但是,凭借令人难忘,可发现的名称和常规用法,您应该会记住最重要的细节,而您使用的每个细节天。


6
在使用4k表的应用程序中工作之后,我可以证明此建议的实用性。记忆无济于事,项目约定却无济于事(尤其是在强制执行时;如果没有,则必须依靠内存)。
Vineet Reynolds

1
为了帮助发现,请为您所需的内容创建备忘单和/或(模型)图。这样,您只需要查看您的纸张或doc /图像,即可扫描所需的表名和列名。
Kissaki 2011年

34

爱因斯坦说:“永远不要记住你可以在书本上查找的内容”,我完全同意。

将您的记忆用于抽象的东西(开发技术和原理),而不是需要时可以找到的事实。


是的...不要记住它,它将在您使用信息时出现。不过,请务必随时准备参考文件。
Newtopian 2011年

17

令人尴尬的承认-我已经使用C已有30年了,但是却不记得如何声明函数指针-我总是必须退出K&R来检查语法。

更尴尬的是,我必须认真思考typedef的工作原理-是:

 typedef foo int;

要么

 typedef int foo;

这些是我个人的盲点。如果您有类似的产品,我也不会担心。


2
+1:我从1985年开始编程C,但仍然必须查找如何声明函数指针。前几天,我刺了一口刺,它奏效了,我对自己感到很满意。(我确实记得该怎么做typedefs ... :-)
Bob Murphy

2
我很高兴在使用(C#)的语言中,等效功能指针实际上可以被人类解析,而不仅仅是编译器。
svick 2011年

@svick哦,我在读取函数指针时没有问题,它正在记住如何编写遇到问题的指针。
尼尔·巴特沃思

3
我故意不记住C或C ++优先级表。如果需要它们,我已经为他们提供了方便的即时参考,而且我真的不想编写会使其他没有记住它们的人感到困惑的代码。
David Thornley

依赖于非显而易见的优先规则的代码是错误代码。
Gort机器人

9

计算机善于准确记住东西。计算机还擅长查找以前记得的东西。

因此,关键技能是使用计算机作为内存的扩展。编写干净的代码,记录内容,学习有效地使用搜索工具,设置开发环境以便于查找内容等。

一个不错的副作用是,您还可以使其他人更轻松地阅读您的代码。


5

记忆很重要

强大的记忆力确实是开发人员可以拥有的顶尖人才之一。实际上任何人都可以拥有。这确实是一件特别的事,我羡慕和钦佩那些幸运的人。它绝对可以帮助一个人成为一个更强大的开发人员,律师,机械师,或者(在此处插入选择的工作)。

应该需要多少?

但是我认为要求记住所有事物并不是一个公平的要求。我确实相信您会开始将事情作为做事的自然部分来进行记忆。这就是为什么读一本关于语言的书并在生产环境中使用它不是一回事的原因。当您每天处理某些事情(有些人称之为“练习”)时,您将开始使某些事情成为第二天性。

与其他海报一样,我相信记住应用程序的关键部分确实有帮助。但是,当您可以利用智能感知等功能(在现代工具中越来越常见)时,我不确定要花多少钱来记住所有这些投资是否值得。

您如何改善?

我不是记忆专家,但有些人认为您确实可以通过脑力锻炼(填字游戏,数独游戏,拼图游戏等)来提高记忆力。从理论上讲,您的大脑就像一块肌肉,如果您以不同方式使用它并进行锻炼,那么您可以增强它。

有趣的是,研究关于做脑游戏,编程和互动活动等事物如何随着时间影响大脑的研究。这样的事情能否帮助对抗因年龄或痴呆症而引起的记忆力减退的发作?


5

我来自哪里,有句老话,用英语是这样的:“一个笨蛋会记住,一个聪明的人会写下来”。基本上,无论您的记忆力如何,您都会忘记。你只是人类。结果,这使得依赖人类的记忆……非常不可靠。即使您认为自己记得这些表名,也可以100%确定吗?您只需要几秒钟即可查找表名,但可能需要数小时甚至数天来查找由拼写错误引起的错误。

总之,不,这是一个荒谬的要求,尤其是在大型项目中,因为该项目可能具有数千个表和类。


3

如果您正在从事某项工作并且是一项长期任务,那么可以,您应该努力学习并能够记住各种表和列名,类,变量和方法。当您与他们一起工作时,这会随着时间的流逝而发生。您不会一overnight而就地学习它们,但您应该努力尽可能多地了解正在使用的系统。此外,在大型系统中,您不可能记住所有内容,但是没有理由不去学习和记住尽可能多的内容。

始终必须查找所有内容只会提高生产力-如果您正在执行任务并且每隔几分钟必须停止并查找所有内容,那将是专心的休息。使用适当的工具为您提供帮助,并了解/记住您的能力。它将大大提高您的生产率。


1
我非常不同意记住细节。您应该记住概念和功能。也就是说,知道您的系统可以做什么,并且知道如何找出确切的方法/变量/列名称。
edA-qa mort-ora-y

1
我不希望您了解所有信息,但是我希望在特定子系统上工作的任何人都可以了解该子系统的内部和外部。我认为这些知识关心您的工作。
Thomas Owens

3

记住确切的类名有什么意义吗?我不这么认为。

是否有必要知道您的项目在类名称中使用了什么样的术语,以便您可以更快地搜索它们?绝对是


2

我不同意您应该记住表名,但是应该容易猜到。为了易于猜测,请保持一致。这样,您就不会问自己“ Hmm .. foo表是复数还是单数?主键ID是RID还是FooRID?”


2

我根本不知道如何在不了解主要表名和关键列名的情况下随时查询数据库(但当然不是全部)。我知道知道这些东西而不必每次都弄清楚的人对于组织来说变得更有价值,并在其他人陷入困境时成为“去”的人。

我发现,通常当人们不开始学习这些东西时,他们会在查询中犯错误而没有意识到。我经常在代码审查中立即发现错误,因为我确实了解我们的数据库结构以及表之间的关系以及关键业务规则是什么,而不必查找它们。

我个人发现,那些不愿学习结构的人在查询该特定数据库时经常处于初学者的水平。他们也往往无法在裁员中幸免。我认为您的老板正在努力帮您一个忙,以吸引您更多的关注。


1

除了强大的内存以外,对领域有很大帮助的还有域驱动设计,并遵循简单的约定,例如表名和类名相同。如果您的企业主与您讨论此要求,则代码中应包含其使用的特定领域术语。在这种情况下,我们不必记住代码中业务术语和名称之间的映射。这个习惯需要一段时间才能被接受,但是它非常有用,因为它还可以减少业务所有者和开发人员之间的来回翻译错误。

如果项目持续时间很长,那么在一段时间内熟悉代码库将在潜意识中帮助您记忆。


对不起,你能解释一下什么意思domain driven design吗?
Anyname Donotcare 2011年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.