

Webアプリケーションを作成しているのですが、moduleの戻り値の設計についてどうすれば良いのか悩んでいます。

「usersモデルのuser_nameを更新する」という単純なmoduleを作成することを例にしてみます。

[code]

    module UserNameUpdate
      def update(user, user_name)
        if user.blank?
          return xxx
        end
    
        if user_name.blank?
          return xxx
        end
    
        user.update!(user_name: user_name)
      end
    end
    
[/code]

引数がnilでないことや、必要であれば型もチェックするかもしれません。  
hashで返してみることやstringで返すことも考えてみましたが、奥が深くて指針となるようなドキュメントを読んでみたいです。

[code]

    module UserNameUpdate
      def update(user, user_name)
        hash = {
          code: 1,
          message: nil
        }
    
        if user.blank?
          hash['message'] = '引数のmessageがnilです'
          return hash
        end
    
        if user_name.blank?
          hash['message'] = '引数のuser_nameがnilです'
          return hash
        end
    
        user.update!(user_name: user_name)
      end
    end
    
[/code]

戻り値はどう設計するのがベストでしょうか。Ruby/Railsに関係なく普遍的な問題かと思っていますので、言語/FWは特に限定はしないです。  
ドキュメントや良いアイディアがあれば教えていただけますでしょうか。

あと、タグって何を付けるのが適切ですかね。。それっぽいタグが無く。。


CC BY-SA 3.0
2018-01-05T03:14:24.100
40733
2018-01-05T05:40:52.247
2018-01-05T05:40:52.247
754
26885
question
ruby-on-rails プログラミング言語 詳細設計
モジュールの戻り値の設計について


@shingo.nakanishi
さんも仰っていますが、言語・FW(が提供する機能)によって、適切な設計は変わってくると思います。おそらく、最終的に質問者様が知りたいのは、 rails
において今回の機能を実装する場合の正しい(たしからしい)方法は何か、だと思っています。

その前提で回答をすると、今回はカラムの値チェックがほぼなので、 [rails tutorial にある active record
validation](https://railsguides.jp/active_record_validations.html) に従うのが、
rails 的な実装なのではないかと思います。

抜粋して説明してみますと、カラムに対する値チェックならば、

[code]

    class Person < ActiveRecord::Base
      validates :name, presence: true
    end
    
[/code]

のように宣言的に記述することが可能です。


CC BY-SA 3.0
2018-01-05T05:39:58.767
40736
2018-01-05T05:39:58.767
754
40733
answer