发表关于“代码样式和设计模式”的演讲[关闭]


9

我的公司(规模不大,在3个办公室中大约有40个人)偶尔会在网上进行“开发者研讨会”,其中一位开发人员主持了有关某个技术主题的演示。这不一定与我们的工作有关,而只是为了帮助每个人提高技能和理解。

我被要求主持下一个,主题(从我提供的列表中选择)是代码样式和设计模式。我知道那些事情并没有那么紧密,但我可以接受。我已经看到我们代码库中有很多地方可以改进,甚至可以满足DailyWTF的要求,因此我希望本演示文稿尽可能有效。问题在于我只是不知道一小时内要覆盖的内容。

我的第一个想法是使用我们自己的代码作为示例,以阐明“请实际将此应用于您的工作”这一观点。但是话题如此广泛。

我们的代码(PHP)有一些问题,包括:

  • 最小OO。最近,它一直在改进,但是仍有大量的全局功能。我花了一段时间才找到东西。
  • 全局配置(我猜是意见)。您几乎可以在每个文件中找到$ GLOBALS ['blah']。
  • 大括号样式不一致。听起来很小,但这实际上导致语法错误在五天前被推送到源头,直到昨天仍未得到纠正。
  • 低效的构造。我能够进行一些基本的改进,从而将某些区域的运行时间减少了70%。

我希望这件事尽可能有用,但不要屈服于我的同事。那么,我应该关注“样式”的哪些方面,哪种设计模式可能最有用的解释?


1
这是一个开放的话题,很难得出任何可靠的结论。我会尽量使演示文稿的重点是让您的同事了解当前的问题,而不是说服他们遵循特定的标准。为什么不列出您在问题中提出的要点,并举例说明为什么这是不良做法以及可能的后果,例如技术债务。还可能提及诸如ReSharper和FxCop之类的工具。
没人

Answers:


8

在编写此代码的人面前的演示文稿中使用真实代码时要格外小心。

充其量,您需要用手指指着每个人的面前来打乱他们。而您得到的不是“您真的睁开了眼睛”,而是“在所有人面前出现了WTF?您甚至看过自己的代码dumbA ..”

以真实的示例为例,但要对其进行修改,或者确保无法将其追溯到任何编写它的人。或者从您认识的人那里获取真实代码,但也可以从一些旧代码中获取乐趣,并与这些人开玩笑和开玩笑,直立式:)

回答您的原始问题:与可读性有关的所有事情:带有尽可能少的参数,OOP,冗长而详细的变量名和注释的功能。


2
+1:代码审查是一项微妙的操作,需要外交和自由裁量权,不应单独用于演示目的。
Matthieu

4

我猜您的组织中有一个错误跟踪系统。从存储库中剔除一些最讨厌的错误,查看修复原因的报告(全局变量出了错,函数执行了原本不该做的事情等),然后讨论了可能有助于避免此问题的编码样式和设计模式。

这是一些艰苦的工作要做研究此位,但这是开车回家,你提出什么呢真正最强的方式工作


2

“还有很多全球功能”。

首先,获取列表。完成是理想的。

其次,将此列表划分为潜在类。考虑一下类的定义。

在实际演示中,选择最大,最明显,最耀眼,最无争议的潜在类别,该类别将吸收这些全局功能。

作为讨论主题。你有个主意 您需要达成共识。并一路回答问题。并帮助他们理解为什么它是一类对象,而不是一堆共享全局变量的随机函数。

然后,在讨论了这一点之后,他们才明白这节课以及您如何到达内容...。

打开投影机。

开始输入。

修改代码。重新运行单元测试。

设计模式,编码样式和工作已完成。全部合而为一。


2

在1小时内,您将获得很好的基础知识。

我建议从每个主题中选择3件事,并专注于这些事情;将幻灯片的长度限制在5到7个单词,以便人们听您说话而不是阅读幻灯片;使用虚构的例子(这样就不会像别人的建议那样踩别人的脚了);最后提供参考(URL比书本更好),作为那些想了解更多信息的人的练习;发表您的Intranet上的幻灯片后,您的演示文稿。(关于花括号问题,请使用代码格式化程序;这可能不值得一战)

建议主题:

  • 编码风格

    • PHP中的OOP禅:编码风格!
    • 全局功能导致代码癌的5个原因
    • 名字叫什么?约定和常识(或不要让我思考!)
  • 设计模式

    • 我们代码中的一些GoF模式;一个介绍
    • 模式只是工具,而不是福音
    • 最好和最坏:模式和反模式

注意:全局配置有时很难避免;一种简单的补救方法是将所有对它们的引用放入init函数中

警告:我只知道有足够的PHP可以打破wordpress并进行较小的网站修复


1

关于在演示文稿中使用真实代码-如果使用了真实代码,则仅将其用于好的示例,绝不用于坏的示例。不好的话,可以自己弥补,或者在网上找到。这使您的同事为自己的工作感到自豪并获得认可。这也避免了因被选为不良开发商而被激怒/尴尬的情况。


0

编码风格是坏习惯。很难摆脱。让某人养成不良习惯的最佳方法?让他亲眼看看这是多么的丑陋,令人作呕或有害。

向他们显示错误的代码,问他们有什么不好的地方。让他们考虑一秒钟,然后给他们“ Aaahaaa!” 向他们展示一个边缘案例(可能是Fencepost问题?),或者一个糟糕的设计使其他所有东西崩溃的案例。

看来,你们的人经常遇到糟糕的设计问题。向他们展示一个示例,说明以无害的方式更改全局函数如何损害依赖于此函数的其他函数,但不知道它是否已更改。向他们展示一个经典的全局变量同步问题。

以一种有趣的方式来吸引他们,而不是让他们感到无聊或让他们担任防御性职位(这个人是谁来批评我们?);例如,向他们展示一个函数,该函数分两步完成工作(1-输入妻子的名字)(2-将其存储在全局中)(3-输入丈夫的名字并将妻子的名字从全局中存储到数据库中)(4-笑为同步不良会导致男人有“新”妻子),因为开玩笑建议编写离婚统计功能。

Believe可以对编程风格有所了解,因为我们对自己的想法进行编程,并且在编程设计受到批评时,有些人将其视为对自己的思维方式和他们的才智的侮辱,因此您必须采取一种有趣的方法。

承担您的不良功能,进行一些更改将其隐藏起来,以免使代码所有者感到尴尬,并与观众合作并与之互动以进行改进。结果:您的源代码控制系统第二天早上会很忙,所以请喝咖啡,对更改日志微笑。

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.