拡張機能を販売したり、他のユーザーと共有したりする場合は、人間が読めるコードを書くことを検討してください。
- メソッドを複雑にしすぎないでください
- メソッドにDOCブロックを追加します* 
- 以下のような適切な変数名、使用$productIdsの代わりに$ids
- メソッドについても同じで、public function myOnProductSaveMethod() {...}...何も言わないがtryDisableInternetOnProductSave()、ヒントが必要だというヒントを与える
- 意味のある場所でタイプヒントを使用する someMethod(Varien_Data_Db_Collection $collection)
- 魔法の数字と文字列を避ける** 
- モデルセット$_eventPrefixプロパティ(および$_eventObject)を使用して、オブザーバーによりアクセスしやすくする場合
- システム構成フィールドを追加する場合
- デフォルト値を設定する config.xml
- <validate>ノードをフィールドに追加します- system.xml
- ACLリソースを追加する adminhtml.xml
 
- 管理バックエンドに不要な/広告の第1レベルメニューエントリを追加しないでください-トップバーにも設定セクションにも
- すべてのコントローラーアクションにACLリソースを追加します(マスアクションも!)
- クエリがDB テーブルプレフィックスで機能することを確認します
- 下位互換性について考えます(これは本当に意見に基づいています)
- Mysql4クラスをサポートしていません
- 非推奨のメソッドを使用しないでください
 
- すべてのケースで期待通りに機能することを確認してください-UnitTests(PhpUnitなど)を追加してください
- David Mannersに加えて...を追加composer.jsonして展開を容易にします
- PHP5.6はEOLなので、PHP7のコードを記述します。declare(strict_types=1);入力タイプと出力タイプを使用および定義する
- Magento2:のようなツールを分析静的コードを使用してコードをチェックphpstanを。ここで魔法のメソッドのサポート。(最新のコミットは2.3で機能しますが、2.1 / 2.2以前は-phpstan 0.8.5が必要です)
* DOCブロック:
PSR2標準またはPHPMDの PHP_CodeSnifferでMagento-1コードを確認する場合、この行を追加することをお勧めします(意味がある場合)...
- クラスへ
- @phpcs:disable PSR1.Classes.ClassDeclaration.MissingNamespace
- @phpcs:disable PSR2.Classes.PropertyDeclaration.Underscore-継承されたプロパティ
- @phpcs:disable Squiz.Classes.ValidClassName.NotCamelCaps
- @SuppressWarnings(PHPMD.CamelCaseClassName)
- @SuppressWarnings(PHPMD.CamelCasePropertyName)-継承されたプロパティ
 
- メソッドへ
- @SuppressWarnings(PHPMD.CamelCaseMethodName)-継承されたメソッド
- @SuppressWarnings(PHPMD.StaticAccess)-- Mage::または他の静的呼び出しを使用する場合
 
** 頻繁に使用されます:
- 管理ストアID
- 0>- Mage_Core_Model_App::ADMIN_STORE_ID
 
- 製品 status
- 1>- Mage_Catalog_Model_Product_Status::STATUS_ENABLED
- 2>- Mage_Catalog_Model_Product_Status::STATUS_DISABLED(- 0予想どおりではない)
 
- 製品 type
- simple>- Mage_Catalog_Model_Product_Type::TYPE_SIMPLE
- bundle>- Mage_Catalog_Model_Product_Type::TYPE_BUNDLE
- configurable>- Mage_Catalog_Model_Product_Type::TYPE_CONFIGURABLE
- grouped>- Mage_Catalog_Model_Product_Type::TYPE_GROUPED
- virtual>- Mage_Catalog_Model_Product_Type::TYPE_VIRTUAL
 
- 製品 visibity
- 1>- Mage_Catalog_Model_Product_Visibility::VISIBILITY_NOT_VISIBLE
- 2>- Mage_Catalog_Model_Product_Visibility::VISIBILITY_IN_CATALOG
- 3>- Mage_Catalog_Model_Product_Visibility::VISIBILITY_IN_SEARCH
- 4>- Mage_Catalog_Model_Product_Visibility::VISIBILITY_BOTH
 
SQLの順に同じASC対Zend_Db_Select::SQL_ASC (例えば)。
言って、「それは今までに変更されることはありません原因それはnessessaryではありませんか」?たとえばcatalog_product、Magento 1.5と1.9の間のどこかで属性のエンティティIDがからに変更された10ため4、これにより拡張機能が破損する可能性があります。
$collection->addFieldToFilter('entity_type_id', 10)
代わりにこれを使用すると、クエリが1つ追加されますが、安全になります...
$entityTypeId = Mage::getModel('eav/config')
    ->getEntityType(Mage_Catalog_Model_Product::ENTITY)
    ->getEntityTypeId();
$collection->addFieldToFilter('entity_type_id', $entityTypeId)