Helps are useful to prevent duplicated code (in models, templates, ...) and sometime they are just necessary. - for checking if you custom module is enabled, you can place something like `Mage::getStoreConfigFlag('my/module/enabled')` to every file where you want to check this, __or__ you use `Mage::helper('my_module')->isEnabled()` with benefits: - if ie the config path changes for some reason, you just have to adjust one file - you can rewrite helpers `isEnabled()` method and it will affect all classes that use it, instead of rewriting several files - [13th @ How to write a custom extension?][1]: *Do not rewrite classes unless is necessary. Use observers and if it's not possible to use helper methods that receive as parameter and instance of a class that you wanted to override. __Wrong:__ Override `Mage_Catalog_Model_Product` to add the method `getProductArticles()`. __Right__. In your helper add `getProductArticles(Mage_Catalog_Model_Product $product)`* - make layout updates more flexible using `<action method="someMethod"><var helper="module/method" /></action>` > You can just create a helper called `Data.php` in each module and __leave it empty__. When using PHPUnit you should add [one single line][2]: `protected $_moduleName = 'My_Module';` [1]: https://magento.stackexchange.com/questions/8344/how-to-write-a-custom-extension/186054#186054 [2]: https://magento.stackexchange.com/questions/46255/ecomdev-phpunit-translation-not-working-with-mocked-helper/46256#46256