アカウント名:
パスワード:
ソースコードをざっと眺めました.第一印象としては- ソースコードが冗長.長い!- コメントが英語で書かれているが文法の誤りが多い点が気になりました
たとえばhttp://ja.softether.org/@api/deki/files/679/=sourcecode.png [softether.org]に例示されているたった20行のソースコードでもIPV4_GET_FLAGS(ip) & 0x01 を直接評価する行もあれば,その後 last_packet 変数に代入する行もあったりで全体的に冗長です
プロトコルやパケットは実装側のことも考えてデザインされているので,そのデザインを正しく理解できれば,多分ソースコードは今の半分ぐらいの行数で簡潔に実装出来ると思います
評論家は偉大なり。自分で作れずとも批評ができるから。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
UNIXはただ死んだだけでなく、本当にひどい臭いを放ち始めている -- あるソフトウェアエンジニア
ソースコードを読んでみた (スコア:5, 興味深い)
ソースコードをざっと眺めました.第一印象としては
- ソースコードが冗長.長い!
- コメントが英語で書かれているが文法の誤りが多い
点が気になりました
たとえば
http://ja.softether.org/@api/deki/files/679/=sourcecode.png [softether.org]
に例示されているたった20行のソースコードでも
IPV4_GET_FLAGS(ip) & 0x01 を直接評価する行もあれば,その後 last_packet 変数に代入する行もあったりで
全体的に冗長です
プロトコルやパケットは実装側のことも考えてデザインされているので,
そのデザインを正しく理解できれば,多分ソースコードは今の半分ぐらいの行数で簡潔に実装出来ると思います
Re: (スコア:0)
評論家は偉大なり。自分で作れずとも批評ができるから。
Re:ソースコードを読んでみた (スコア:1)
例えば、IPV4_GET_OFFSET(ip)が0でなくて、IPV4_GET_FLAGS(ip)の1ビット目のフラグが立ってる場合、
「フラグメントが起こっていない」にもかかわらず「フラグメント中のどこか途中」という
矛盾のあるパケットを意味しそうですが、そのエラーチェックはありませんね。
IPは詳しくないので、そういう不正な(?)パケットの処理をどうすべきか正確には分かりませんが、もやもやします。
他の部分との兼ね合いで絶対に起こらないのであれば、両方をチェックする必要はありませんし。
あとは、0x01を何かの定数にしておいて欲しいな、とかも。
とにもかくにも動作するすごい者を作れる人はすごいんですが、
作ったあとのメンテナンス性やらなにやらと、プログラミング坂はそこからもまだまだ長いので。