一个长方法只应该在它自己的类或函数中使用吗?

Pim*_*ger 1 oop

很多时候,在互联网上的代码或我的同事的代码中,我看到他们只用一种方法创建一个Object,只在整个应用程序中使用一次.像这样:

 class iOnlyHaveOneMethod{
   public function theOneMethod(){
     //loads and loads of code, say 100's of lines
     // but it only gets used once in the whole application
   }
 }

 if($foo){ 
  $bar = new iOnlyHaveOneMEthod;
  $bar->theOneMethod();
 }
Run Code Online (Sandbox Code Playgroud)

那真的好了吗:

if($foo){
 //loads and loads of code which only gets used here and nowhere else
}
Run Code Online (Sandbox Code Playgroud)


为了便于阅读,将代码的负载和负载移开是有意义的,但它不应该只是在函数中吗?

function loadsAndLoadsOfCode(){
 //Loads and loads of code
}
if($foo){ loadsAndLoadsOfCode(); }
Run Code Online (Sandbox Code Playgroud)

将代码移动到新对象真的更好,然后只是创建一个函数或直接将代码放在那里?
对我来说,函数部分更有意义,似乎更容易阅读,然后创建一个几乎没有任何用处的对象,因为它只包含一个方法.

The*_*aul 8

问题不在于它是在函数还是在对象中.

问题是你在一个blob中有数百行.无论是大量的代码是在一个对象的方法中,还是只是一个类似乎或多或少都与我无关,只是作为次要的合成糖.

那些数百条线路在做什么?这是实现面向对象最佳实践的地方.

如果你的其他开发人员真的认为使用一个对象而不是一个函数使它更加"面向对象",但是有几百行函数/方法不被视为代码气味,那么我认为你在组织上有一些教育要做.