스토리텔링 코드 하나 써주세요.

며칠 전에 한 여자 프로그래머가 말했다
그는 "아직 대상의 지향을 잘 모르겠다"고 말했다.
PHPer인 그녀는 최근 Laavel의 개발 프로젝트에 전문적으로 참여하고 있다
평소 실장 형태로 대상을 처리하는데, 당연히 대상의 규격도 이해한다.
하지만 나도'잘 모르겠다'는 심정을 잘 안다.
이게 정답인지 모르겠어요.
조금만 생각해보고 다음 두 코드를 보내봤어요.
이것은'어떤 남녀의 일생을 기록하는'방법을 실시한 지루한 코드다.
개인 정보를 보호하기 위해 적합한 할리우드 부부로 바뀌었다
실제로 보낸 코드에는 그녀와 그녀의 가까운 친척의 이름이 들어 있었다.
첫번째
$human_model = new HumanModel();
$working_model = new WorkingModel();
$relation_model = new RelationModel();

$man_data = ['name' => 'Will', 'sex' => HumanModel::MALE, 'birthday' => '1968-09-25'];
$man_id = $human_model->create($man_data);
$working_model->save($man_id, 'Actor');
$working_model->save($man_id, 'MC');

$woman_data = ['name' => 'Jada', 'sex' => HumanModel::FEMALE, 'birthday' => '1971-09-18'];
$woman_id = $human_model->create($woman_data);
$working_model->save($woman_id, 'Actless');

$relation_data = ['man' => $man_id, 'woman' => $woman_id, 'created' => '1994-09-19'];
$relation_id = $relation_model->create($relation_data);

$relation_model->update($relation_id, ['married' => '1997-12-31']);

$child_data = ['name' => 'Jaden', 'sex' => HumanModel::MALE, 'birthday' => '1998-07-08', 'parents' => $relation_id]:
$child_id = $human_model->create($man_data);

$working_model->save($child_id, 'Actor');

$relation_model->update($relation_id, ['expired' => '9999-12-31']);
두 번째.
$man = new Man('Will');
$man->born('1968-09-25');
$man->workAs('Actor');
$man->workAs('MC');

$woman = new Woman('Jada');
$woman->born('1971-09-18');
$woman->workAs('Actless');

$couple = $man->meets($woman, '1994-09-19');

$couple->married('1997-12-31');

$child = $couple->haveBaby('1998-07-08')->asBoy();
$child->named('Jaden');

$child->workAs('Actor');

$couple->forever();
그리고 물어봤어요.
"어떤 게 좋아요?"
“・・?”
「」

제가 전하고 싶은 건요.


어떤 코드는 읽기 쉽고 사용이 유연하며 설치가 가볍다
그게 아니면
압도적인'이야기감'의 차이다.
전자의 코드는 가장 많게는 이렇다.
$human_model = new HumanModel();
$working_model = new WorkingModel();
$relation_model = new RelationModel();

//男のデータを作成
$man_data = ['name' => 'Will', 'sex' => HumanModel::MALE, 'birthday' => '1968-09-25'];
$man_id = $human_model->create($man_data);
$working_model->save($man_id, 'Actor');
$working_model->save($man_id, 'MC');

//女のデータを作成
$woman_data = ['name' => 'Jada', 'sex' => HumanModel::FEMALE, 'birthday' => '1971-09-18'];
$woman_id = $human_model->create($woman_data);
$working_model->save($woman_id, 'Actless');

//男女の関係データを作成
$relation_data = ['man' => $man_id, 'woman' => $woman_id, 'created' => '1994-09-19'];
$relation_id = $relation_model->create($relation_data);

//結婚日を更新
$relation_model->update($relation_id, ['married' => '1997-12-31']);

//子供のデータを作成
$child_data = ['name' => 'Jaden', 'sex' => HumanModel::MALE, 'birthday' => '1998-07-08', 'parents' => $relation_id]:
$child_id = $human_model->create($man_data);

//子供の職業データを更新
$working_model->save($child_id, 'Actor');

//夫婦データを更新
$relation_model->update($relation_id, ['expired' => '9999-12-31']);
후자의 코드에서 이런 이야기를 자연스럽게 볼 수 있을까?
//男の名はウィル。1968年生まれ。俳優・ラッパーとして活動
$man = new Man('Will');
$man->born('1968-09-25');
$man->workAs('Actor');
$man->workAs('MC');

//女の名はジェイダ。1971年生まれ。女優として活動
$woman = new Woman('Jada');
$woman->born('1971-09-18');
$woman->workAs('Actless');

//男は1994年のある日、女と出会った
$couple = $man->meets($woman, '1994-09-19');

//2人は1997年の大晦日に結婚
$couple->married('1997-12-31');

//翌年、2人は男の子を授かり、ジェイデンと名付けた。
$child = $couple->haveBaby('1998-07-08')->asBoy();
$child->named('Jaden');

//子供もまた、俳優になった
$child->workAs('Actor');

//2人はいつまでもおしどり夫婦として幸せに暮らしました
$couple->forever();
남자가 태어나거나 일하거나 해후하거나 결혼한다.
커플은 아이를 낳아 속박을 깊게 할 수 있다.
맞아, 바로 이런 물건이야.
이 물건이야말로 대상이지.

추적 대상


이전 코드에서는 단순 변수, 배열, 레코드 또는 ID에 불과했습니다.
그러나 모든'물건'은 각자의 의미와 작용을 가지고 행동과 변화가 있다.
'물'의 종류를 하나의 종류로 삼다
성질과 상태를 속성으로 하고 행동과 변화를 방법으로 표현하다
대상(지향)을 향한 출발점이죠.
이런 생각으로 코드를 쓰면 프로그램은 매우 이야기적으로 변한다.
남자와 여자가 만나는 이런 일(처리)
$man->meets($woman)
그냥'man meets woman'이라고 쓸 수 있잖아.
자연히 반은 주어이고 방법은 술어이며 매개 변수는 목적어이다.
그리고 결과가 뭐(이곳은 커플)로 태어났다면 되돌아오는 값이다.

좋은 점을 모르다


벌써 상대를 향한 말인지 의심이 듭니다.
대상을 향하든 무엇이든 이런 사상을 이해하기 어려운 사람은
나는 그들이 눈앞의 이익을 추구하기 쉽다고 생각한다.
예를 들어 설치가 수월해지고 코드가 쉽게 읽히며 사용 방법이 유연해지는 등이다.
설치 수준에서 고려
이전 코드의 HumanModel, WorkingModel, RelationModel 클래스 및
후자 코드를 구현하는 Man, Woman, Couple 클래스에서
대략 전자는 압도적으로 가볍다.
대상을 향한 구체적인 장점을 언어로 표현하기 어렵다.
캡슐화, 다태성, 계승 따위는 전달해야 할 것이 매우 많다
나는 마음속에 기억하기 위해서는 번거로운 코드만 많이 쓸 수 있을 것이라고 생각한다.
다만, 그런 코드를 써 보려고 하는 동기 중 하나로서
이처럼 상대가 쓴'이야기감'을 느낄 수 있다면 좋겠다.

좋은 웹페이지 즐겨찾기