これまでは触る必然性が無かったし、あまり触りたい感じがしてなかったので Java のコードをまともに書いたことがなかったんだけど、ちょっと必然性が出てきたのでここ2〜3日書いている。
2〜3日書いているといっても、まずはテストをどうやって書いて実行すればいいんだ?ってところを探ってからのスタートだったので、実質的なコードを書き始めたのは今日からになる。
で、ようやくコードを書き始めて思ったのが、いまどきの PHP と Java はそっくりなんだなってこと。
まぁ、PHP が Java のほうを向いて拡張をしてきたという雰囲気が感じられるし(要出典)、似てくるのはそういうものなんだろうなという気分ではあるけど、改めて見ると、ホントにまぁ、そっくりだ。
pacakage example.foo;
import example.module.Status;
public class Bar extends BaseClass implements BaseInterface {
private String str = "string";
public boolean function checkStatus(Status status) {
boolean result = status.isOk();
return result;
}
}
namespace Example\Foo;
use Example\Module\Status;
class Bar extends BaseClass implements BaseInterface {
private $str = 'string';
public function checkStatus(Status $status) {
$result = $status->isOk();
return $result;
}
}
ちなみに Java のデファクトコード規約はよく分かってないのでこういう書き方にしてみている。PHP の方は Java に似せるためにあえて PSR-2 を無視している。動かしてないので動かないかも(動いても意味ないコードだけど)
また、JUnit と PHPUnit も考え方がほぼ同じ。JUnit が先にあって、その考えをベースに PHPUnit が作られた(要出典)から当たり前なんだろうけど。
pacakage example.foo;
import static org.junit.Assert.*;
import org.junit.Test;
import org.junit.Before;
public class BarTest {
private Bar bar;
@Before
public void setUp() {
bar = new Bar();
}
@Test
public void testCheckStatus() {
assertTrue(bar.isOk());
}
}
namespace Example\Foo\Test;
use Example\Foo\Bar;
class BarTest extends PHPUnit_Framework_TestCase {
private $bar;
protected function setUp() {
$this->bar = new Bar();
}
public function testCheckStatus() {
$this->assertTrue($this->bar->isOk());
}
}
これも動かしてないので動くかどうか分からんけど、setUp()
的なところとか、assert
あたりの考え方もほぼ同じ。
さらに PHP7 になってくると、メソッドの戻り値の型指定が可能になったり、引数の型(タイプヒント)が増えたりして、もっと Java に似た形になっていきそうな気配。
こうなってくると「もはや PHP でなく Java で良いのでは?」という気分が少し湧いてきてしまうなぁ。
あと、最近触り始めている Elasticsearch や Hadoop も Java だし、もうちょっと Java の知識も増やしていきたい気分もある。書いていて楽しいか?ってのは、また別として、基礎知識は持っておきたいな。