3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

クソコードお焚き上げの会Advent Calendar 2023

Day 10

数珠繫ぎのコード

Last updated at Posted at 2023-12-07

はじめに

私がwebアプリケーションを開発して初めて組んだコードでの体験談です。
そのままだと出せないので疑似コード化しています。
恥ずかしくて後輩に見せられないのですが、吐き出して楽になりたいと思います。

数珠繫ぎって?

例えばこんな感じです。

function 処理を受け付ける関数(){
  なんらかの実行
  function 処理を実行する関数
}

function 処理を実行する関数(){
  function 非同期な処理の関数(callback 成功時の処理)
}

callback 成功時の処理(){
  function なんらかの後処理
}
・・・

あぁぁぁ今書いていても恥ずかしい!!!(実際もっと繋がります笑)
関数内から関数コールするというのはまぁ別にだめじゃないのですが、この関数再利用してないんですよね。
1機能を実現するために関数達を処理単位で作って数珠繫ぎにしていくという。
これだとせっかく分かれている関数なのに処理の流れの中でしか使えずにただただ分割しているだけというだけでした。
こうしてしまうと受け付けたら非同期実行して成功時に〜するというのが追いかけにくい・・・と自分でも思っていました。

知らなかったんです

上記JavaScriptのコードなのですが、無名関数とか、即時実行関数とか当時理解していなかったことが原因かと。
少なくともcallbackのあたりは無名関数で良さそうですよね。
あとはPromiseあたりの理解ですかね。

今なら?

thenとかでもいいですがとりあえず

function async 処理を受け付ける関数 (){
  const result = await 非同期な処理()
  if(result){
    成功時の処理
  }

}

うん。全然違いますね。

おわりに

過去を漁るともっとやばいでコードもありましたが、ここでは数珠繫ぎのコードを紹介させていただきました。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?