右脑干手如何处理大量的左脑干手代码?[关闭]


11

我主要是一名艺术家,尽管我形容自己是一名艺术家/物理学家。虽然我可以做数学,处理单词以及被认为是左脑的“逻辑”事物,但这是一种努力,并且我会犯错,而我做得很好,并且大多数时候会考虑与右脑有关的事情当然,所有这些都是模糊的,因为左右脑理论过于简单,没有任何心理活动如此简单。但是我确实感觉自己适合艺术家,视频导演,厨师和其他非语言思维,创意类型,而大多数“ IT”或铁杆软件工程师的人的思维方式却有所不同,注重细节,坚如磐石。一次记住许多细节,强大的理性和言语能力。

因此,在这里,我从事的工作是修复大量C ++软件中的繁琐且难以理解的错误,这在OO上非常繁琐,并且除非我牢记其他二十个类和方法名,否则任何一行代码都没有意义,它们之间的关系,执行流程(非常像意大利面条)和其他细节。

除此之外,我还强烈反对许多现代C ++和OO风格。编写此代码的人真的喝了OO和Modern C ++知识。我发现它实际上使代码更难遵循,更难于决定在哪里修复或更改某些东西。我不知道这是否是左右差异(或任何您想称呼它的一部分)的一部分。

但是我必须使用C ++进行工作-人们依靠我的收入。有什么技巧和技巧来应对这种情况,从而对我的雇主尽可能有效?


9
这不是左脑/右脑的区别-除了编写它的人(通常甚至连他们也没有),没有任何人可以不费劲地理解或修改这种C ++代码。只要确保在要求您估算某件产品需要花费多长时间时,您就可以将其填充百分之几以应对“当代”设计。
Carson63000

8
别那么沮丧。C ++是一种非常奇怪的语言,其设计目标不是可用性(对于人类),也不是编译性,清晰度,正确性(对于编译器)。C ++的唯一设计目标是使每个可能的词汇排列都有意义,即使这完全不切实际。

1
@Rocket:你炸死了:-)但我确实同意。
怪胎

@mojuba-是的,我们使用的是C ++的高级形式:D
DarenW 2010年

2
这就是所谓的“旧版代码”,这个问题并不仅仅针对您。请参阅en.wikipedia.org/wiki/Legacy_code,以获得有关迈克尔·费瑟斯(Michael Feathers)关于如何驯服这种野兽的书的链接。

Answers:


2

在职业发展方面,我建议更多地进入那些对模糊性感到满意的设计方面。作为一个喜欢创新的人,维护工作可能不是一个很好的选择,而如果可能的话,从事新工作可能会更好。

虽然对自己的工作感到自豪并没有错,但是不想陷入细节困境可能是您可能需要寻找一种新的改进方法的事情。与其将它看作是肮脏的东西,不如将它视为一种乐趣。


支持和维护可能会吸引他们的支持者,因为有些人更喜欢调整现有系统而不是安装新系统。我知道我倾向于在要更改的现有系统上更好地工作,而不是尝试从以太网中抽出一些东西。

您可能想做的是,在人们想要解决各种麻烦点和集体讨论解决方案的想法时加以注意,因为这是您喜欢的一部分。这并不是要知道要更改的代码行,而是要告诉别人:“您是否在查看该对象,然后查看它是否在做超出其声明的功能?” 之类的事情。

另一点是知道要创建什么:图形,应用程序,网站,流程或系统?这些都是稍有不同的东西,想要创建时,可能会要求您输入“创建什么?”。


这个想法几乎是在昨天刚与老板会面时提出的。我想知道-是不是每个人都总是渴望创造事物,而维护总是像清洗厕所一样吗?如果有人四处说“我想创造东西!” 他们会认真对待吗?
DarenW

4
喜欢代码维护。但是,它更像是外科手术,而不是清洁厕所:您必须固定工作系统的一部分,而又不破坏它。
Frank Shearar 2010年

“从乙醚中抽出一些东西”-让我想起一个梦,我从空中拔出柠檬甜甜圈来打动一个女孩:D但是,那对我来说很重要-我一直想,想着,创造新事物。
DarenW,2010年

3
@FrankShearar有时就像在厕所里做手术;(
mlvljr 2012年

16

听起来(至少对我而言)听起来不像您的代码特别面向对象,或与“现代C ++”特别相似。相反,良好的面向对象的关键要素之一就是封装,其主要目的是减少在任何给定时间需要跟踪的事物的数量。同样,“非常像意大利面条……执行流程”听起来既不是面向对象的,也不是现代的(任何东西)。

现在,我想如果我查看您正在维护的代码,则可能会有所不同,并且/或者您可能会看到我的代码与您当前正在维护的代码相似,这很难猜测。的确,如果您试图追溯代码工作方式的每个细节,那么我想您可以将其视为类似意大利面条的控制流程。

举例来说,我比许多程序员更喜欢(或至少可以容忍)很多隐式转换-我经常使用代理类之类的东西。这意味着在调用一个函数的过程中可能会轻易创建三个或四个不同类型的临时对象(请注意,我并不是在谈论实际执行该函数,只是在调用它)。当然,所有这些临时对象将在包含函数调用的表达式末尾再次销毁。如果加起来,您可能很容易在代码中“明显”调用的一个函数的调用/返回中调用了六个或更多单独的函数。

办事点那个样子,但是,是可以很容易地忽略大多数处理等的细节参与琐事(例如)的如何特定对象表示,并只在它真正集中代替。如果您看到特定部分的错误,则只需要处理大部分代码即可。但是,我试图通过创建如此小而简单的类来避免这种情况,从而做到这一点,以至于几乎不需要一眼就能知道它显然是正确的,因此从那时起就很容易忽略它。


啊! 这种东西使我感到畏缩!也许我的思维方式太底层了,即“面向操作码的编程”,对此不满意。
2010年

2
至于“轻松忽略大多数琐事”-编码风格似乎是琐事的美化者。为了解决本周的一件小事情,有很多令人难以置信的细节并没有真正做任何事情。
DarenW,2010年

“ ...通过创建如此小而简单的类,而使它们做得如此之少,以至于只需要一眼就可以了……”是否有很好的开源示例?
DarenW,2010年

2
@darrenw当然,smalltalk 80
Tim Williscroft 2010年

10

警告:这个答案很长,并且有很多心理障碍(我尝试解释,但仍然如此)。我能说什么 心理学是编程之外我最喜欢的学科之一。

我主要是一名艺术家,尽管我形容自己是一名艺术家/物理学家。虽然我可以做数学,处理单词以及被认为是左脑的“逻辑”事物,但这是一种努力,并且我会犯错,而我做得很好,并且大多数时候会考虑与右脑有关的事情当然,所有这些都是模糊的,因为左右脑理论过于简单,没有任何心理活动如此简单。但是我确实感觉自己适合艺术家,视频导演,厨师和其他非语言思维,创意类型,而大多数“ IT”或铁杆软件工程师的人的思维方式却有所不同,注重细节,坚如磐石。一次记住许多细节,强大的理性和言语能力。

这实际上是基于对神经科学有些过时的看法。在某个时间点上,科学家认为左脑只负责逻辑和原始的感官数据,而右脑只负责直觉和感觉。事实证明,左脑确实具有右脑的所有功能,反之亦然。作为一个极其右脑但又合乎逻辑的人,他的方向和空间取向很糟糕,而且完全没有传统上与右脑相关的任何艺术创造力,我可以证明这一点。

左右脑之间差异的最好方法是将它们视为彼此的镜像。要了解这一点,您需要一些背景数据。一位名叫卡尔·荣格(Carl Jung)的心理学家提出了一种20年代的人格理论,该理论将人格分为几个维度。您可能听说过其中之一:内向与外向。我已经写了一些 关于这个主题的博客文章,但是基本上可以归结为:内向使自己与他人区分开,而外向则着重于它如何与他人联系。这被称为“态度”。

然后,您具有四种不同的认知功能:思维,感觉,感觉和直觉。为了简单起见,我们仅将其中两个功能视为“判断”功能(思考和感觉),而将其他两个视为“感知”功能。审判职能作出决定。当您处于判断心态时,您将尝试避免意外。您希望事先做出所有正确的决定,这样您就不必在出现意外时进行调整。因为您已经做了大量的计划,所以一旦做出决定,您可能会变得僵化而僵化。另一方面,有感知力的心态倾向于偏爱在其裤子的座位上飞行并随着拳头滚动。

通常,您将功能和态度结合在一起以创建(正式命名)功能态度(内向的思维,外向的感觉等)。人们的意识人格主要由主导功能态度和辅助功能态度定义。最终,心理学家达成共识,人们大致分为两类:主要的两个功能由内向的判断功能和外向的感知功能组成的人,或者主要的两个功能由外向的判断功能和内向的感知功能组成的人。如果您曾经参加过MBTI或类似的性格测试,则最后一个字母会告诉您属于哪个类别。如果您是P,则表示您是内向的判断者/外向的感知器,而J则相反。

到目前为止还和我在一起吗?这就是我要理解的意思,即两侧是彼此的镜像。当时没有人意识到这一点,但是他们实质上是在勾勒出大脑中功能所在的草图。实际上,荣格的每个功能态度都已映射到大脑中的大致位置。事实证明,所有P函数(内向判断和外向感知)都在大脑的右侧,J函数都在大脑的左侧。

每当您说左脑的人擅长细节,右脑的人擅长“大局”(尽管我会说“全盘”会更准确)时,您就在关注事物的外向面。如果一个左脑的人管理一个右脑的人,那么左撇子就会想知道有关右撇子将如何预先做好工作的所有细节。他们希望预先确定明确的要求和严格的截止日期。权利人只是想对他们需要做的事情有一个非常广泛的了解,以便他们以后可以填写细节。

但是,请注意,这似乎并不是您所遇到的。似乎左撇子的代码可能没有经过周密的深思熟虑,并且有些问题可以通过一些深思熟虑来避免。这是因为,当您在脑海中构建诸如代码之类的抽象模型时,您正在使用内向的函数,而该函数会以相反的方式起作用。正确的人希望事先建立该模型,并以某种方式填写模型,使其可以填写所有必要的细节,或者可以轻松地填写所有细节。另外,就最佳采用方法而言,它们可能会变得僵化(请注意,您对C ++更高级的功能持强硬态度)。左撇子的模式将更加临时化,并随其去往。

我的经验是,因此,左撇子将指责右撇子过度设计所有事物,而右撇子将指责左撇子过于敏捷和肮脏。双方对他们都有真相,但是只有当这种方法采取极端方法时。不过,这很有趣:他们正在采取相反的方法来实现相同的目标(即完成任务)。权利专家希望预先确定他们的模型,以便他们可以花费更少的时间来执行该任务,从而更快地完成整个项目。左撇子们希望花费更少的时间进行架构设计,以便他们更快地完成工作。

顺便提及,在项目管理类型的东西(确定时间表,提出要求等)方面,这两种态度是相反的。这可能会导致一种令人困惑的情况,其中一方指责另一方过于僵化,而另一方则声称另一方没有计划得足够充分,然后下一个论点使双方都采取了完全相反的立场。

您可以如何处理所有这些?无非就是意识到这些差异并试图尽可能地适应另一方的观点。问题是,这是双向的。您可以尽可能地理解和容纳左撇子,但这不会有太大的不同,除非他们试图回馈青睐。这始终是挑战。不是因为左撇子是个混蛋,并且想让右撇子的生活悲惨,而是因为左撇子习惯于在编程领域占主导地位。如果您的思维方式得到了几乎所有人的赞同,那么您一定会坚信自己也是正确的。


很深,而且足够长,足以让您推迟一会儿真正的工作!
DarenW 2010年

6
非常有趣的东西。有任何资料吗?
梅森惠勒

4

相信你的直觉。如果您是一个优秀的专业人士,则意味着无论您的“头脑”是左还是右-左脑有意识地做的事情都可以直观地做到。最后是同一回事。不幸的是,我们无法控制自己的潜意识,但是如果能够做到的话,它比我们的意识能更快地完成工作。这些直截了当的见解正是潜意识计算的结果。

哦,您可能会失败,这太不可靠了。但是既然你问了...;)


2

我在视觉上也认为,排版的细节使我迷惑不解。

Google术语:英国阅读障碍网站也学习风格:视觉空间思维,整体学习。

概念第一,技巧提示

  1. 头脑聪明的人想象着一切在他们的“头脑”中。
  2. 当您的可视化与现实完全吻合时,工作很容易
  3. 右脑思想家不做,左脑思想好,必须依靠可视化
  4. 右脑学习者可以立即学习整个内容。然后将细节融入到心理构造中。他们需要先概览,然后再详细。
  5. 没有上下文的概述,细节就漂浮在真空中,在心灵的眼中没有联系-因此必须使用暴力记忆。对于右脑非常困难。

帮我的提示:

  • 1使用颜色区分语法部分
    1. 编写要调试的代码的伪代码:执行此操作,然后转到此处并标记代码段以匹配
    2. 如果对象是真实的动物,它们将具有习惯和预期的行为。这是一种更容易可视化的编码方式。
    3. 我把代码想象成一个故事,以pseudicode作为我的笔记,然后遵循整个过程。

  • 接下来要修复哪个部分?

  • 我的工作流程

  • 谁住在那儿?(过程,连接,数据等)

  • 他们需要做什么?(功能)OK

  • 将其编码到可以进行语法/拼写检查的位置,然后复制并粘贴

  • 测试

    结果->有效吗?是的,继续前进

    没有?角色必须扮演每个人死亡的哈姆雷特。

  • 返回环境

  • 遗漏了什么?,sysntax错误
  • 需要连接
  • 需要数据
  • 错误代码有含义吗?
  • 它在代码的另一部分工作吗?
  • 版本麻烦吗?
  • 它应该工作
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.