レガシーコード In WordPress

Post on 30-Jun-2015

9.144 views 0 download

description

LT from phpcon2013

Transcript of レガシーコード In WordPress

レガシーコード

in WordPress

レガシーコードとは

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

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

● 技術的負債

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

プログラマからみたWordPress

● すごく流行っている

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

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

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

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

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

● 貢献の難しさ

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

● 古いPHPの機能への依存

貢献の難しさ

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

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

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

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

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

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

● グローバル変数

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

WordPress中に1,044ヶ所出現

古いPHPの機能への依存

● var

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

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

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

protected は付けてるのに…

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

古いPHPの機能への依存

● mysql_connect

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

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

mysql_connect

deprecatedのエラーを消してる

コミュニティの断絶

● PSR

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

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

なんでそんなことに

● 後方互換性の重視

ユーザの環境を壊せない

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

maybelater?

その結果

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

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

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

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

負債への対応

● 学習、学習、学習

正しい手法を使う

● テストによる支援

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

● 外交手腕

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

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

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

あなた達です!