レガシーコード In WordPress

21
レガシーコード in WordPress

description

LT from phpcon2013

Transcript of レガシーコード In WordPress

Page 1: レガシーコード In WordPress

レガシーコード

in WordPress

Page 2: レガシーコード In WordPress
Page 3: レガシーコード In WordPress

レガシーコードとは

● 理解しづらい、変更しにくいコード

● ユニットテストが存在しないコード

● 技術的負債

● プログラマの嫌いなもの

Page 4: レガシーコード In WordPress

プログラマからみたWordPress

● すごく流行っている

● でもコードは読みづらい

● できればコードは触りたくない

● 正直我慢ならないレベル

● →レガシーコード的な特徴を持っている

Page 5: レガシーコード In WordPress

レガシーコード化した理由

● 貢献の難しさ

● 良くないプログラミング手法の多用

● 古いPHPの機能への依存

Page 6: レガシーコード In WordPress

貢献の難しさ

● SVN + Tracなのでパッチを送るのが面倒

● GitHubからプルリクエストを送っても放置

● プラグインの開発とかも重くて大変

● Git > Svn では無いけれど、議論も停滞。

● plugin.svn リビジョン番号77万

Page 7: レガシーコード In WordPress
Page 8: レガシーコード In WordPress
Page 9: レガシーコード In WordPress

良くないプログラミング手法

● グローバル変数

コード解読とテストの難易度を上げる

WordPress中に1,044ヶ所出現

Page 10: レガシーコード In WordPress

古いPHPの機能への依存

● var

PHP4の不完全なオブジェクト指向機能

731ヶ所出現 (grep ‘var \$’)

Page 11: レガシーコード In WordPress

コメントにはpublicって書いてある

protected は付けてるのに…

コメントには private と書いてある

Page 12: レガシーコード In WordPress

古いPHPの機能への依存

● mysql_connect

廃止が決まっている非推奨のPHPの機能

2009年からPDOへの移行が提案されたまま

Page 13: レガシーコード In WordPress

mysql_connect

deprecatedのエラーを消してる

Page 14: レガシーコード In WordPress

コミュニティの断絶

● PSR

20以上のFWやCMSが参加する標準

WordPressは投票にも参加していない

Page 15: レガシーコード In WordPress

なんでそんなことに

● 後方互換性の重視

ユーザの環境を壊せない

機能も増えないしバグも治らないのにコード変えるの?

Page 16: レガシーコード In WordPress

maybelater?

Page 17: レガシーコード In WordPress

その結果

● PHPでWordPressがいずれ動かなくなる?

● CMSの相互連携などが進みづらい

● WordPressでPHPを学習すると10年近く前の

スタイルのPHPしか覚えられない

Page 18: レガシーコード In WordPress

負債への対応

● 学習、学習、学習

正しい手法を使う

● テストによる支援

後方互換性を維持しながらコード変更する

● 外交手腕

ただしい手腕を進める体制づくり

Page 19: レガシーコード In WordPress

ここで叫んでも何も変わらないのはわかってます

Page 20: レガシーコード In WordPress

変えることができるのは…

Page 21: レガシーコード In WordPress

あなた達です!