Search for:
  • ブログ
    • IT・プログラミング
    • デジタルマーケティング
    • 起業・スタートアップ
    • 自由気ままな移住と生活&働き方
うずらのヤドリギ(旧Uzublo) - 海外移住して起業した自由人エンジニアのブログ
うずらのヤドリギ - 海外移住して起業した自由人エンジニアのブログ
  • ブログ
    • IT・プログラミング
    • デジタルマーケティング
    • 起業・スタートアップ
    • 自由気ままな移住と生活&働き方

Blog

プログラミングの学び方(4) – 出力メッセージの実装の仕方

access_time2018年9月11日
perm_identity Posted by Hisashi
folder_open IT・プログラミング, プログラミング学習

プログラミングの学び方シリーズも、いつの間にか連載シリーズになってきた笑
前回は、プログラミングの学び方(3)で、処理フローの重要性をお伝えした。
今回は、実際にプログラムを書く際に、気を付けたほうが良いポイントの1つ、「出力メッセージの実装の仕方」を、個人的な経験をもとにお伝えする。

処理フローは決まった、が・・・

処理フローを設計書やラフの図で定義したのちに、実際にプログラミングを書いていくと、いくつか悩ましい問題が出てくる。特に悩ましいのが、処理フローには出てこないが処理する際に必要な機能だ。
サーバーサイドのWebプログラミングの例でいえば、

  • エラーメッセージの出力
  • ログ出力
  • 通信処理(≒API連携)結果を踏まえた、次の処理

といったケースがあげられる。
例えば、以下のソースコードを見てみよう。

function validate($request) {
    if (!ctype_digit($request['tax'])) {
        // ここでエラーメッセージを返したい①
        return false;
    }
    if (!ctype_digit($request['price'])) {
        // ここでエラーメッセージを返したい②
        return false;
    }
    return true;
}

プログラミングを始めて数年以内の方には共感いただけるかもしれないが、このようなエラーメッセージをクライアントサイド返す処理の実装に迷ったことはないだろうか?
上記はPHPのソースコードなので、ソースコード内にHTMLタグを差し込むことでエラーメッセージを出力することもできるが、デザイン修正等の変更に弱くなってしまうので、ここではその手法はとらない前提とする。
そこで、このソースコードを修正してエラーメッセージを返すにはどうすればよいだろうか?

メッセージ出力処理の実装例

上記の処理を修正するにはいくつか対策があるが、今回は以下の2種類の実装方法で解説する。

  • 参照渡しでエラーメッセージを返す
  • 戻り値にエラーメッセージを含める

参照渡しでエラーメッセージを返す

まず、参照渡しでエラーメッセージを返す実装を見てみよう。

function validate($request, &$errorMessage) {
    if (!ctype_digit($request['tax'])) {
        // ここでエラーメッセージを返したい①
        $errorMessage = 'Taxは数値で入力してください';
        return false;
    }
    if (!ctype_digit($request['price'])) {
        // ここでエラーメッセージを返したい②
        $errorMessage = 'Priceは数値で入力してください';
        return false;
    }
    return true;
}

このように、処理の途中でエラーメッセージをセットし、戻り値を返すことになる。
エラーメッセージをセットできるようになったので、先ほどのソースコードよりは若干エラーハンドリングが行いやすくなっている。

オブジェクトや連装配列でエラーメッセージを返す

一方、オブジェクトや連装配列でエラーメッセージを返す場合、次のようになる。

function validate($request, &$errorMessage) {
    if (!ctype_digit($request['tax'])) {
        // ここでエラーメッセージを返したい①
        $result = array(
            'success' => false,
            'message' => 'Taxは数値で入力してください'
        );
        return $result;
    }
    if (!ctype_digit($request['price'])) {
        // ここでエラーメッセージを返したい②
        $result = array(
            'success' => false,
            'message' => 'Priceは数値で入力してください'
        );
        return $result;
    }
    $result = array(
        'success' => true,
        'message' => ''
    );
    return $result;
}

先ほどの戻り値との大きな差は、オブジェクトの利点を活用しやすいところだ。つまり、オブジェクト指向の最大のメリットである拡張性を担保している点にある。
例えば、今後エラーコードも一緒に返したり、エラーの発生場所もついでに返したりすることができるようになるわけだ。

実装例○○の時に△△の様な実装の型ってあるの?

ここまで、メッセージの出力処理について簡単なソースコードを用いて実例を示してきたが、メッセージの出力だけにとどまらず、世の中にはある程度プログラムを書く際に「こうしたほうが良い」という型が存在する。それをデザインパターンと呼ぶ。
後日、そのデザインパターンと使うシーンについて解説していこうと思う。


関連

Tags: デザインパターンプログラミング
Newer 起業家がInstagramにハマったら、そのビジネスは終わる
Older WordPressの新しいエディタGutenberg(グーテンベルク)を試してみた!
プロフィール

Hisashi

インフラメインのIT屋。一応某社Founder & Director & CEO。現在は時間場所に依存しない悠々自適な引きこもり生活を実現。
 
>>> 詳しいプロフィールはこちら

★Twitter☆
@freelife_man007

★LINE☆
友だち追加

Search for:
カテゴリから探す
  • ブログ
    • IT・プログラミング
      • AWS(Amazon Web Service)
      • ITインフラ・ネットワーク
      • Laravel(PHP)
      • Wordpress
      • デジタルマーケティング
      • プログラミング学習
    • 会社設立
    • 政治・社会
    • 自由気ままな移住と生活&働き方
    • 起業・スタートアップ
タグから探す
5G Amazon LightSail Amazon Web Service Instagram ITリテラシー PDCA PHP SEO SNS Web Webマーケティング Wordpress きっかけ アフィリエイト インフルエンサー インフルエンサーマーケティング エンジニア カリブ キャッシュフロー キャリア キラキラ起業女子 クアラルンプール コンテンツマーケティング コンバージョン システムエンジニア セキュリティ ソースコード デザインパターン ノマドワーカー ノービザでいける国 ビザ(査証) フリーランス フルスタックエンジニア プログラミング プログラミング学習 マレーシア マレーシア移住 リモートワーク 仕事の自由 場所の自由 時間の自由 海外移住 物販 独立 起業
Menu
  • プロフィール
  • プライバシーポリシ
  • 免責事項
About me

日本と東南アジアを往来しながら、
プログラミングしたり、
ネットワーク構築したり、
AWSをもてあそんでいます。

ブログは、気が向いたら更新。
晴耕雨読の生活を楽しんでいます。

オンラインサロンも立ち上げる予定なので、興味のある方は是非のぞいてみてください。

Ads
Twitter
Tweets by freelife_man007
Uzula Business All Rights Reserved.
keyboard_arrow_up