是否有Windows编程哲学?[关闭]


30

我一直在Unix和Windows环境中进行编程。通常,我在Unix上工作,在那里我学习了Unix Philosophy,可以概括为:

  • 编写可以做一件事并且做得很好的程序。
  • 编写程序以协同工作。
  • 编写程序来处理文本流,因为这是一个通用接口。

Unix和Windows世界之间的编程文化似乎存在明显差异,例如:

  • GUI与CLI
  • 注册表与配置文件
  • 很多专门针对任何给定需求的工具与可以组合在一起的一组通用正交工具

Windows世界中是否有等同于“ Unix哲学”的东西?哪些Unix程序员可以从Windows中学到什么,或者在转向Windows编程时应该注意什么?

我希望答案集中在Windows编程的最佳实践上(而不是Windows和Unix之间的斗争)。


15
应该知道吗?“事情会糟透了,糟透了。”
2011年

3
只有一种哲学认为,没有哲学。;)
Mudassir

6
实际上,Powershell已将某些Unix哲学带入Windows,特别是编写了只做一件事的小程序(实际上是Powershell中的cmdlet),并将它们与做其他事情的其他cmdlet结合在一起。当然,大多数临时用户仍然不知道如何使用Powershell,但这取决于您正在编写哪种软件。
JohnL

4
我们第三次会做对的。
2011年

7
Windows的理念是为Microsoft带来收入。
dan04 2011年

Answers:


28

实际上有一些类似“ Windows哲学”的东西。通常,它是关于组合概念和用户界面部分的-针对用户的设计程序,而不是其他程序员。

这意味着:

  • 简单直观的用户界面
  • 自然的工作流程
  • 应该开箱即用
  • 在不需要的地方不需要技术知识

这是一本好书:

双重文化主义

随着Windows的普及,黑客开始采用编码方法。首先,它以最复杂和混乱的方式编写C / C ++程序,以使只有最难的大脑才能理解它们,这是一种通过仪式。在Windows下,情况开始发生变化,这种“代码样式”现在已不再受欢迎。不能确定它是否直接影响Windows还是对代码质量的新认识,但至少它们是及时的。


7
我认为这些要点不适用于Windows。
Tom Hawtin-大头钉

4
@汤姆:这是一种哲学;它不需要适用于任何东西。不过,我相信它非常适用于Windows世界中的大多数事物。
Allon Guralnek

@Tom我更同意@Allon,因为在我看来,OP的问题更多是控制台与GUI编程。
gideon

6
什么?!?看一下旧的BSD和AT&T资料来源。干净,简单,优雅。而且我从未见过比典型的肿MFC代码更令人困惑的事情。
SK-logic

即使没有一个正确的答案,我也非常喜欢这一选择。Joel的博客文章很棒。
Maglob

8

我认为您在问题中所要避免的差异更多是关于这些系统的用户,而不是其开发人员的编程风格。长期以来,* nix一直是程序员或计算机爱好者的领域。“休闲”使用的方式很少。与Windows相比,[home]用户数量要大几个数量级。

临时用户不想记住十几个不同的命令行标志来运行程序。他们想单击一个按钮。

临时用户不想担心他们的系统配置文件,也不想担心Fluffy Kitties如何记住他们最喜欢的猫科动物。

即使有“更好”的产品,休闲用户通常也会随心所欲地使用它们。

我认为我的主要观点是……Windows非常注重为用户而不是创建者进行创建。不要违背Windows开发中存在的长期范例。不要用废话污染用户的“我的文档”,也不要无缘无故地将自己插入他们的启动中。

也许具有类似的重要性:编写用户文档。


7
用户文档?成功程序的用户将无需接触任何文档。

@Developer Art-这一点是正确的,但是当您编写软件时,例如,不同国籍的人必须理解的粒子物理学,可以说“单击此处以描述我们对您的数据的处理方式” ”,这比编写能够从用户的思维中提取用户期望的心灵感应计算机要容易得多。
TZHX 2011年

3
“不要用废话污染用户。” -颇具讽刺意味。
ocodo 2011年

1
怎么这样,Slomojo?
TZHX 2011年


4

妥协与定制

这并不是什么都可以做到的最好的方法,但是如果您愿意花时间在某些地方做出一些令人不快的决定,那么您几乎是做不到的。如果您不喜欢它目前正在做什么,则可以更改它。在很少的地方,只有一种方法甚至总是最好的方法。

足以让用户开始

开箱即用的东西很少,但是大多数都是可用的。Unix倾向于朝着什么都行不通的方向发展,直到您对其进行配置,并且Apple使所有功能都变得更加优美,但以牺牲一些可配置性/灵活性为代价。

期待日志支持尾巴

Windows用户不仅仅因为有更新版本就进行升级。由于漏洞或错误修复,它们甚至不总是升级。Windows用户通常需要被迫升级,但是如果您强迫他们快速升级,他们将寻求替代产品。

用户具有广泛的技能水平

从临时家庭用户的角度来看,Unix在技术层面上具有很高的进入障碍。苹果公司的感知技能水平非常低,但是不鼓励临时用户以自定义操作系统的方式做很多事情。Windows介于两者之间。与Apple产品相比,开始使用它仅稍难一些,但是有很多简单的信息可用,有时甚至在安装本身中,也包含有关如何进行一些非常深入的系统配置的信息。这会导致中层用户的技能水平相当随机,因为如果他们有足够的信心去尝试某些东西,那么他们很有可能会想出办法。在某些情况下,这还会使胆怯的用户失去任何经验,因为他们对可能出问题的警告保持警惕。



2

早在UNIX之前,UNIX就面向程序员和类似的人,而Windows始终面向不懂如何编写bash脚本的用户。因此,在Windows中,您应该关心用户,这意味着为所有用户创建一个工具,而用户不必担心谁配置几个程序来协同工作。


1

我不确定这是否是一种哲学,但是恕我直言,Windows编程带有某种思想密度。有时候事情如何运作还让人感到惊讶。

如果您正在接受Windows开发,并且建议您多加注意,我建议您耐心等待。

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.