【问题标题】:How does being blind affect your coding style? [closed]盲人如何影响你的编码风格? [关闭]
【发布时间】:2017-11-01 23:16:44
【问题描述】:
how blind people program 的问题已经得到了一遍又一遍的回答,但我找不到任何关于失明和使用屏幕阅读器或盲文显示器如何影响你的编码风格的信息。
你能将盲人创建的代码与其他代码区分开来吗?
盲人是否会导致您对问题有不同的看法并寻找其他解决方案?
【问题讨论】:
标签:
workflow
accessibility
development-environment
【解决方案1】:
我是一个盲人开发者。我将尝试根据我所做的以及我在其他盲人开发人员的代码中看到的内容来回答您的问题。
但是,请记住,我的回答绝对不是参考。可能与有视力的普通开发人员一样多的不同用法、习惯和偏好。
在公司和/或开源项目中工作时,无论如何,我们都必须按照给定公司和/或项目的规则定义我们的代码格式。毫无疑问,这是必需的。
在这种情况下,我和我认识的大多数盲人程序员首先编写未格式化的代码、编译、测试等,并且仅在提交时才格式化。
IDE 中的自动格式化工具非常珍贵,否则通常会很痛苦。如果不使用 IDE,命令行工具也很常见,例如用于 Java 和 C/C++ 的样式。
如果公司和/或项目不需要给定格式,我们中的许多人:
- 不要缩进代码,因为在其中导航和编辑通常更痛苦,特别是如果我们想注意不破坏它。与有视力的人相反,压痕通常不能帮助我们快速识别块。即使有盲文显示器,我们一次也只能看到一行。
- 使用其他技巧来确定块的结束位置,如果有疑问/嵌套较深时,如有必要。大多数情况下,这采用右括号后的注释形式,例如
} // end for。当需要这样做时,它可能是一个很好的指标,告诉我们应该更好地组织代码/更好地拆分成不同的功能。
- 使用很多小技巧能够快速跳转到感兴趣的代码部分。这可以是简单的 cmets,例如
//constructor,可以通过 Ctrl+F 立即找到,但也可以更微妙。例如,我个人的一个技巧是在定义或声明函数时在名称和打开的父级之间放置一个空格,但在调用函数时不要。所以我可以快速找到定义(通过搜索“name(”),或调用它的地方(通过搜索“name(”))。
- 讨厌 ASCII 艺术,因为它完全没用,例如:
/********** 的长行
- 经常使用快捷方式来避免长代码不提供任何真实信息,例如
import java.util.* 而不是一一导入 50 个类。
- 通常更喜欢使用简单的文本编辑器而不是复杂的 IDE,或者只将它们用于特定功能,例如自动格式化,因为这是绝对需要的。造成这种情况的两个原因:许多 IDE 无法访问,只能部分访问,或者大部分都可以访问,但使用给定功能并不一定容易或舒适;或者因为语音和盲文显示器的响应能力很差,即当按下向上/向下箭头阅读下一行/上一行代码时,它开始说话之前的延迟太长(如果你乘以 100 毫秒,它很快就会变得非常烦人千倍)。
【解决方案2】:
好吧,我部分回答了这个问题here。基本上,你很少能看出一段代码是由盲人编写的,除非他/她以非常粗鲁的方式违反规则(例如,像我一样在 Python 中使用制表符和驼峰式而不是空格和蛇形大小写)。
但即使是这些东西也可能只在个别宠物项目或快速而肮脏的脚本中看到。大多数盲人承认他们生活在一个有视力的世界中,如果您希望合并您的拉取请求或由工作上级审查您的代码,您必须遵守项目,不管你喜不喜欢,不管你是不是盲人。在这种情况下,Go 的人们做出了一个明智的决定,即包含一个格式化工具,每个 Go 开发人员在提交他/她的代码之前都必须运行该工具。 “没有人喜欢 Gofmt 风格”,Rob Pike 说,他错了:我非常喜欢它的风格:camelCase 和标签,多么美味的东西!但即使您不喜欢它,也必须运行该工具,因为这是语言规则。
对于你问题的最后一部分:是的,有时失明会让我选择一种解决方案,即一种语言。因为我讨厌snake_case,所以我无法考虑在Rust 中进行严肃的开发,例如,因为(再次)编写这样的代码是一种语言规则。我确实编写了 Python 代码,但它......哦,好吧......其他的东西,因为 Python 在解决日常问题方面是如此快速和灵活,所以我决定在这里处理它的(烦人的)多个下划线和没有块结尾标记。顺便说一句,盲人编码器的另一个可能标志是这样的 cmets:} // end if(在 Javascript 或 C 中),或 #end if 在 Python 中作为一整行。我不否认有视力的人可以使用这些,但如果你看到每一个 if 和 for 以及 while 结尾都这样评论,那么代码很有可能是由盲人编写的。我个人不这样做,但我认识非常喜欢它的人。
【解决方案3】:
我知道这个问题已经很老了,但答案可能仍然相关:
我是盲人开发人员,我总是打算遵循公司的编码风格或语言开发人员给出的某些标准。
- 我总是在编写代码时立即缩进代码,屏幕阅读器会报告缩进级别。老实说,我不再有阅读无格式代码的习惯,但我知道盲人会这样做;
- 执行常规的 docblocking;
- 当我需要浏览大部分代码时,折叠/展开代码的某些部分;
- 常规蛇纹/驼纹习惯(取决于语言);
- 有时会编写更长的代码行,然后使用 IDE 修复格式,因为并非总是更长的代码对我来说更难阅读;
- 尝试强制自己将行的长度限制为不超过 80 个字符,但由于缺乏良好的工具而确保发生这种情况有点痛苦;
- 有时会添加一些有用的 cmets 来帮助我调试代码(我的意思是 cmets 中的一些计算/公式对其他人来说并不重要,但这取决于)。
就我个人而言,我发现最大的挑战是在文档块(注释)中编写代码,例如在 Doctrine 或 APIPlatform 中,因为屏幕阅读器会读取行中第一个非空格/非制表符的缩进,即星号 (*)在文档块的情况下。