投票箱続報

駄目ボートなどと駄目な名前をつけたまま放置してしまった。一応本当に作っているんだということを示すためにソースを一部晒してみる。しかし肝心の投票機能は手付かずなのだがどうしたものか。

時に、ソースを晒すのが恥ずかしいという話を聞く。私もそうだ。何が恥ずかしいかと言えば、構成とかセンスとか以前に、変数名やメソッド名に使用した英単語が果たして適切かどうか、まったく自信がないのだ。構成が非効率だったり言語特性に合っていない程度の不備はどうでも良い。わざわざ見てくれた識者の添削意欲を刺激する点で、晒す側としてはむしろ好都合とすら言える。

しかし不適切な英単語というシンプルな問題は、爆笑されるか冷笑されるか互いに居た堪れなくなるかのいずれかであり、とても切ないソースの病理なのである。お、お前いまおれのソース見て笑ったろ。確かに聞こえたぞ。ああいいさ。いいともさ。笑いたければ笑うがいい。あはははは。あはははは。うわーん。病気か。

もはやソースを晒したる者、ガイジンの変な日本語タトゥーを見て笑っていられる立場ではない。ちなみに私がコードを書く際にいっとう時間を食うのがクラス、変数、メソッドその他もろもろの命名である。かけた時間に見合う成果が上がっていないのが惜しまれる。


英語が苦手なプログラマの方、mixi あたりでコミュ立てて語り合いませんか。もっとも私は英語以前に人付き合いが大変苦手なのでコミュで語り合うとか絶対無理ですが。いや無理。もう無理。マジで無理。会話が四往復超えると面倒臭い指数が非線形に急上昇してもう処理し切れません。駄目でごめんなさい。構われたがりのくせに構われると疲れるんです。病気だ病気。わーい。


そんな駄目告白は置いておいて、今回晒すのは Vote クラス。今のところユーザ認証絡みの画面遷移しか実装されていない。

class Vote

  def initialize(cgi, session)
    @cgi = cgi
    @session = session
    @auth = Auth.new(session)
  end
  
  def run
    action = @cgi['action'].to_s
    if action.size > 0
      send(action)
    else
      TopPage.new(@cgi, @auth).show
    end
  end

  def method_missing(name, *args)
    @cgi.redirect(BASE_URL)
  end

  def login
    return @cgi.redirect(BASE_URL) unless @cgi.referer
    vote_email = @cgi['vote_email'].to_s
    vote_pass = @cgi['vote_pass'].to_s
    begin
      @auth.login(vote_email, vote_pass)
      @cgi.redirect(@cgi.referer)
    rescue => e
      info = Information.new(@cgi, @auth)
      info.message = e.message
      info.show
    end
  end
    
  def logout
    @auth.logout
    @cgi.redirect(@cgi.referer)
  end

  def edituser
    return @cgi.redirect(BASE_URL) unless @cgi.referer
    return @cgi.redirect(BASE_URL) unless @auth.logon?
    edit = EditUser.new(@cgi, @auth, @session)
    edit.error = @session['edituser_error'] if @session['edituser_error'].to_s.size > 0
    edit.show
    @session['edituser_error'] = nil
  end

  def edituser_execute
    return @cgi.redirect(BASE_URL) unless @cgi.referer
    name = @cgi['edituser_name'].to_s
    pass1 = @cgi['edituser_pass1'].to_s
    pass2 = @cgi['edituser_pass2'].to_s
    begin
      @session['edituser_name'] = name
      EditUser.new(@cgi, @auth, @session).execute(name, pass1, pass2)
      @session['edituser_name'] = nil
      return @cgi.redirect(BASE_URL)                                        
    rescue => e
      @session['edituser_error'] = e.message
      return @cgi.redirect(BASE_URL + '?action=edituser')
    end
  end

  def register
    return @cgi.redirect(BASE_URL) unless @cgi.referer
    if @auth.logon?
      @cgi.redirect(BASE_URL + '?action=edituser')
    else
      reg = Register.new(@cgi, @auth)
      reg.error = @session['register_error'] if @session['register_error'].to_s.size > 0
      reg.show
      @session['register_error'] = nil
    end
  end

  def register_confirm
    return @cgi.redirect(BASE_URL) unless @cgi.referer
    vote_email = @cgi['vote_email'].to_s
    begin
      reg = Register.new(@cgi, @auth)
      reg.confirm(vote_email)
      reg.show
    rescue => e
      @session['register_error'] = e.message
      @cgi.redirect(@cgi.referer)
    end
  end

  def register_execute
    return @cgi.redirect(BASE_URL) unless @cgi.referer
    reg = Register.new(@cgi, @auth)
    vote_email = @cgi['vote_email'].to_s
    reg.execute(vote_email)
    reg.show
  end

end

さて解説するわけでもなし私はこんなものを晒して何をしたかったのだろう。疲れているのかもしれない。


t.A.T.u.

t.A.T.u.