Ori*_*rds 14

我认为两者都有自己的位置.

你不应该DoSomethingToThing(Thing n)仅仅因为你认为"功能编程是好的"而使用.同样,你不应该简单地使用,Thing.DoSomething()因为"面向对象的编程很好".

我认为这取决于你想传达的内容.不要再将代码视为一系列指令,而是开始将其视为故事的段落或句子.从手头的任务角度考虑哪些部分是最重要的.

例如,如果您要强调的"句子"部分是对象,则应使用OO样式.

例:

fileHandle.close();
Run Code Online (Sandbox Code Playgroud)

大多数情况下,当您传递文件句柄时,您正在考虑的主要事情是跟踪它所代表的文件.

反例:

string x = "Hello World";
submitHttpRequest( x );
Run Code Online (Sandbox Code Playgroud)

在这种情况下,提交HTTP请求远比作为正文的字符串重要,因此submitHttpRequst(x)更可取x.submitViaHttp()

不用说,这些并不是相互排斥的.你可能真的有

networkConnection.submitHttpRequest(x)
Run Code Online (Sandbox Code Playgroud)

你把它们混合在一起.重要的是你要考虑哪些部分被强调,以及你将如何传达给未来的代码读者.


ben*_*ual 8

要面向对象,请告诉,不要问:http://www.pragmaticprogrammer.com/articles/tell-dont-ask.

所以,Thing.DoSomething()而不是DoSomethingToThing(Thing n).