Skip to content

搞英语 → 看世界

翻译英文优质信息和名人推特

Menu
  • 首页
  • 作者列表
  • 独立博客
  • 专业媒体
  • 名人推特
  • 邮件列表
  • 关于本站
Menu

想要更简洁的代码?使用六法则

Posted on 2022-09-24

想要更简洁的代码?使用六法则

每个人都想编写干净的代码。有整本关于它的书!

但是你现在不需要读一本书来编写更简洁的代码。每个编码员都可以学习一个“技巧”,以使他们的代码不那么混乱。

关键是:

每条线只做一件事

一条线,一项任务。

但不要为此而疯狂。

想要更简洁的代码?使用六法则不要这样。

这里的主要思想是:短代码行比长代码需要更少的脑力来阅读。易于阅读的代码更易于推理。理论上,行数较短的程序更容易维护。

但是紧凑的代码可能很神秘。 (见过APL吗?)仅仅因为你可以分割一条线并不意味着你应该这样做。

在某些语言中,您可以将两个值分配给一行中的两个变量:

 x, y = 2, 7

您可以将这两个任务放在各自的行上:

 x = 2 y = 7

但是,来吧。你真的需要吗?如何判断一条线是否应该拆分?

这不仅仅是关于线长

Felienne Herman 在她的书The Programmer’s Brain一书中打开了一个不可否认的事实:“混乱是编程的一部分。”

想要更简洁的代码?使用六法则这可能意味着该休息一下了。

Herman 的书(我强烈推荐)解释了大脑的三个记忆功能如何协同工作来理解代码:

  • 长期记忆 (LTM):存储信息以供长期检索,例如关键字、句法以及常用的成语和模式。
  • 短期记忆 (STM):存储用于短期检索(少于 30 秒!)的新信息,例如变量名称和特殊值。
  • 工作记忆 (WM):处理来自 LTM 和 STM 的信息以得出结论并获得新知识。

STM 和 WM 都很小。两者一次只能存储大约 4 到 6 件东西!超载它们,你就有了混乱的秘诀。

想要更简洁的代码?使用六法则你的大脑如何处理信息。

这给了我们一个判断一行代码是否太复杂的规则:

应简化包含 6 条以上信息的代码行。

我称之为“六法则”。

这是 Python 中的一个示例:

 map(lambda x: x.split('=')[1], s.split('?')[1].split('&')[-3:])

你读起来有那么难吗?我也是。这是有充分理由的。

你必须知道什么是map 、 lambda和.split() 。变量x和s ,字符串'=' , '?' , 和'&' , 索引[1]和切片[-3:]都在 STM 和 WM 中占用空间。总共:十件事!你的大脑跟不上。

或者也许你的可以。

如果是这样,那么您已经获得了一些不错的经验。

您的大脑s.split('?')[1]类的语法“分块”为“问号右侧的字符串部分”。您可以使用存储在 LTM 中的信息重构代码。但是您仍然一次只能处理几个块。

所以……我们可以确定一行代码何时过于复杂。现在呢?

想要更多这样的吗?

每周六发送一封电子邮件,其中包含一个可操作的提示。
总是少于你的 5 分钟。

现在订阅

处理您的申请检查您的收件箱并确认您的订阅发送电子邮件时出错

如果代码令人困惑,请打破它

把它分成小块,就是这样!

我使用两种策略来分解代码。我称它们为 SIMPLE 和 MORF。

SIMPLE 策略添加代码行以减少认知负荷。

想要更简洁的代码?使用六法则

让我们将 SIMPLE 应用到我们之前看到的讨厌的单线。从map()中删除第二个参数并将其放在自己的行中:

 query_params = s.split('?')[1].split('&')[-3:] map(lambda x: x.split('=')[1], query_params)

它仍然可能难以阅读。第一行有七件事要跟踪:

  • query_params
  • s
  • .split()
  • '?'
  • [1]
  • '&'
  • [-3:]

但是每行要跟踪的内容都比以前少了。你的大脑可以更轻松地处理它们。

再次应用 SIMPLE 并将s.split('?')[1]移动到新行:

 url_query_string = s.split('?')[1] query_params = url_query_string.split('&')[-3:] map(lambda x: x.split('=')[1], query_params)

将其与原始的单线进行比较。哪一种更容易处理?

MORF 策略采用不同的方法并将代码分组为函数。

想要更简洁的代码?使用六法则

这是 MORF 应用于我们的单线的样子:

 def query_params(url): return url.split('?')[1].split('&')[-3:] map(lambda x: x.split('=')[1], query_params(s))

你甚至可以结合 MORF 和 SIMPLE:

 def query_params(url): query_string = url.split('?')[1] return query_string.slit('&')[-3:] map(lambda x: x.split('=')[1], query_params(s))

您无需了解代码即可感受效果。每一行都更容易让你的大脑处理。

还有红利哦!

一旦您知道您的 WM 和 STM 没有超载,您就会知道留下的任何混乱都是由于 LTM 中缺少信息造成的。

换句话说,SIMPLE 和 MORF 不仅可以帮助您编写更简洁的代码。它们可以帮助您确定可以通过实践改进的知识差距!


想更多地了解您在编码时的大脑是如何工作的?

查看 Felienne Herman的《程序员的大脑》 。

通过Manning即时访问,或从Amazon订购。

想要更简洁的代码?使用六法则


锻炼

看看我们最终使用 SIMPLE 的代码:

 url_query_string = s.split('?')[1] query_params = url_query_string.split('&')[-3:] map(lambda x: x.split('=')[1], query_params)

一行还有六个以上的“想法”,应该按照六分法拆分:

  • 哪条线?
  • 什么是“想法”?
  • 你会如何拆分它?
  • 分开有很大的不同吗?

原文: https://davidamos.dev/the-rule-of-six/

本站文章系自动翻译,站长会周期检查,如果有不当内容,请点此留言,非常感谢。
  • Abhinav
  • Abigail Pain
  • Adam Fortuna
  • Alberto Gallego
  • Alex Wlchan
  • Answer.AI
  • Arne Bahlo
  • Ben Carlson
  • Ben Kuhn
  • Bert Hubert
  • Bits about Money
  • Brian Krebs
  • ByteByteGo
  • Chip Huyen
  • Chips and Cheese
  • Christopher Butler
  • Colin Percival
  • Cool Infographics
  • Dan Sinker
  • David Walsh
  • Dmitry Dolzhenko
  • Dustin Curtis
  • Elad Gil
  • Ellie Huxtable
  • Ethan Marcotte
  • Exponential View
  • FAIL Blog
  • Founder Weekly
  • Geoffrey Huntley
  • Geoffrey Litt
  • Greg Mankiw
  • Henrique Dias
  • Hypercritical
  • IEEE Spectrum
  • Investment Talk
  • Jaz
  • Jeff Geerling
  • Jonas Hietala
  • Josh Comeau
  • Lenny Rachitsky
  • Liz Danzico
  • Lou Plummer
  • Luke Wroblewski
  • Matt Baer
  • Matt Stoller
  • Matthias Endler
  • Mert Bulan
  • Mostly metrics
  • News Letter
  • NextDraft
  • Non_Interactive
  • Not Boring
  • One Useful Thing
  • Phil Eaton
  • Product Market Fit
  • Readwise
  • ReedyBear
  • Robert Heaton
  • Ruben Schade
  • Sage Economics
  • Sam Altman
  • Sam Rose
  • selfh.st
  • Shtetl-Optimized
  • Simon schreibt
  • Slashdot
  • Small Good Things
  • Taylor Troesh
  • Telegram Blog
  • The Macro Compass
  • The Pomp Letter
  • thesephist
  • Thinking Deep & Wide
  • Tim Kellogg
  • Understanding AI
  • 英文媒体
  • 英文推特
  • 英文独立博客
©2025 搞英语 → 看世界 | Design: Newspaperly WordPress Theme