【プログラミング】アドバイス1:運命のピラミッドを回避
このコミットが含まれているのは:
コミット
16529c4769
163
gemini/blog.atom
163
gemini/blog.atom
|
@ -3,13 +3,134 @@
|
|||
<id>gemini://technicalsuwako.moe</id>
|
||||
<title>テクニカル諏訪子</title>
|
||||
|
||||
<updated>2023-12-01T13:30:00Z</updated>
|
||||
<updated>2023-12-05T00:00:00Z</updated>
|
||||
|
||||
<author><name>テクニカル諏訪子</name></author>
|
||||
<link href="gemini://technicalsuwako.moe" rel="alternate"></link>
|
||||
|
||||
|
||||
|
||||
<entry>
|
||||
<id>blog/programming-pyramid-of-doom.gmi</id>
|
||||
<author><name>凛</name></author>
|
||||
<title type="html">【プログラミング】アドバイス1:運命のピラミッドを回避</title>
|
||||
<published>2023-12-05T00:00:00Z</published>
|
||||
|
||||
<category term="jp"></category>
|
||||
|
||||
<category term="blog"></category>
|
||||
|
||||
<category term="システム開発"></category>
|
||||
|
||||
<category term="php"></category>
|
||||
|
||||
<category term="c言語"></category>
|
||||
|
||||
<category term="プログラミング"></category>
|
||||
|
||||
<category term="ウエブ開発"></category>
|
||||
|
||||
<link href="gemini://technicalsuwako.moe/blog/programming-pyramid-of-doom.gmi" rel="alternate"></link>
|
||||
<content type="html">
|
||||
|
||||
|
||||
|
||||
<p>プログラミングしたら、気づかずに運命のピラミッドを作る可能性が非常に高いです。<br />
|
||||
これを回避した方が良いと思います。</p>
|
||||
<h2 id="heading">運命のピラミッドとは?</h2>
|
||||
<p>ブログラミングで、運命のピラミッドとは、ネストされたインデントの多くのレベルを使用し、コードが読みにくくなる事です。<br />
|
||||
例えば、下記のC言語のコードは運命のピラミッドの問題は発生します。</p>
|
||||
<pre><code lang=""><span style="color:#0b0;font-weight:bold">int</span> <span style="color:#00a000">main</span>(<span style="color:#0b0;font-weight:bold">int</span> argc, <span style="color:#0b0;font-weight:bold">char</span> <span style="color:#666">**</span>argv) {
|
||||
<span style="color:#a2f;font-weight:bold">if</span> (argc <span style="color:#666">&gt;=</span> <span style="color:#666">2</span>) {
|
||||
Display <span style="color:#666">*</span>d <span style="color:#666">=</span> XOpenDisplay(<span style="color:#a2f">NULL</span>);
|
||||
<span style="color:#a2f;font-weight:bold">if</span> (d <span style="color:#666">!=</span> <span style="color:#a2f">NULL</span>) {
|
||||
<span style="color:#0b0;font-weight:bold">int</span> src <span style="color:#666">=</span> DefaultScreen(d);
|
||||
Window w <span style="color:#666">=</span> XCreateSimpleWindow(d, RootWindow(d, scr), <span style="color:#666">0</span>, <span style="color:#666">0</span>, <span style="color:#666">500</span>, <span style="color:#666">500</span>, <span style="color:#666">1</span>, BlackPixel(d, scr), WhitePixel(d, scr));
|
||||
XSelectInput(d, w, ExposureMask <span style="color:#666">|</span> KeyPressMask);
|
||||
XMapWindow(d, w);
|
||||
XFlush(d);
|
||||
|
||||
GC gc <span style="color:#666">=</span> XCreateGC(d, w, <span style="color:#666">0</span>, <span style="color:#a2f">NULL</span>);
|
||||
<span style="color:#a2f;font-weight:bold">if</span> (gc <span style="color:#666">!=</span> <span style="color:#a2f">NULL</span>) {
|
||||
XImage <span style="color:#666">*</span>ximg <span style="color:#666">=</span> openimg(d, argv[<span style="color:#666">1</span>])<span style="color:#666">:</span>
|
||||
<span style="color:#a2f;font-weight:bold">if</span> (ximg <span style="color:#666">!=</span> <span style="color:#a2f">NULL</span>) {
|
||||
<span style="color:#080;font-style:italic">// などなど
|
||||
</span><span style="color:#080;font-style:italic"></span> }
|
||||
} <span style="color:#a2f;font-weight:bold">else</span> {
|
||||
fprintf(stderr, <span style="color:#b44">&#34;グラフィックス内容を創作に失敗しました。</span><span style="color:#b62;font-weight:bold">\n</span><span style="color:#b44">&#34;</span>);
|
||||
}
|
||||
} <span style="color:#a2f;font-weight:bold">else</span> {
|
||||
fprintf(stderr, <span style="color:#b44">&#34;画像を開けられません。</span><span style="color:#b62;font-weight:bold">\n</span><span style="color:#b44">&#34;</span>);
|
||||
}
|
||||
} <span style="color:#a2f;font-weight:bold">else</span> {
|
||||
printf(<span style="color:#b44">&#34;使用方法: %s &lt;画像ファイル&gt;</span><span style="color:#b62;font-weight:bold">\n</span><span style="color:#b44">&#34;</span>, argv[<span style="color:#666">0</span>]);
|
||||
}
|
||||
|
||||
<span style="color:#a2f;font-weight:bold">return</span> <span style="color:#666">0</span>;
|
||||
}
|
||||
</code></pre><p>変わりに、下記のコードを書いた方が良いです。</p>
|
||||
<pre><code lang=""><span style="color:#0b0;font-weight:bold">int</span> <span style="color:#00a000">main</span>(<span style="color:#0b0;font-weight:bold">int</span> argc, <span style="color:#0b0;font-weight:bold">char</span> <span style="color:#666">**</span>argv) {
|
||||
<span style="color:#a2f;font-weight:bold">if</span> (argc <span style="color:#666">&lt;</span> <span style="color:#666">2</span>) { <span style="color:#080;font-style:italic">// argcは2つ以下の場合、続行する意味はありません。
|
||||
</span><span style="color:#080;font-style:italic"></span> printf(<span style="color:#b44">&#34;使用方法: %s &lt;画像ファイル&gt;</span><span style="color:#b62;font-weight:bold">\n</span><span style="color:#b44">&#34;</span>, argv[<span style="color:#666">0</span>]);
|
||||
<span style="color:#a2f;font-weight:bold">return</span> <span style="color:#666">1</span>;
|
||||
}
|
||||
|
||||
Display <span style="color:#666">*</span>d <span style="color:#666">=</span> XOpenDisplay(<span style="color:#a2f">NULL</span>);
|
||||
<span style="color:#a2f;font-weight:bold">if</span> (d <span style="color:#666">==</span> <span style="color:#a2f">NULL</span>) { <span style="color:#080;font-style:italic">// 同様に、DisplayがNULLの場合、続行する意味はありません。
|
||||
</span><span style="color:#080;font-style:italic"></span> fprintf(stderr, <span style="color:#b44">&#34;画像を開けられません。</span><span style="color:#b62;font-weight:bold">\n</span><span style="color:#b44">&#34;</span>);
|
||||
<span style="color:#a2f;font-weight:bold">return</span> <span style="color:#666">-</span><span style="color:#666">1</span>;
|
||||
}
|
||||
|
||||
<span style="color:#0b0;font-weight:bold">int</span> src <span style="color:#666">=</span> DefaultScreen(d);
|
||||
Window w <span style="color:#666">=</span> XCreateSimpleWindow(d, RootWindow(d, scr), <span style="color:#666">0</span>, <span style="color:#666">0</span>, <span style="color:#666">500</span>, <span style="color:#666">500</span>, <span style="color:#666">1</span>, BlackPixel(d, scr), WhitePixel(d, scr));
|
||||
XSelectInput(d, w, ExposureMask <span style="color:#666">|</span> KeyPressMask);
|
||||
XMapWindow(d, w);
|
||||
XFlush(d);
|
||||
|
||||
GC gc <span style="color:#666">=</span> XCreateGC(d, w, <span style="color:#666">0</span>, <span style="color:#a2f">NULL</span>);
|
||||
<span style="color:#a2f;font-weight:bold">if</span> (gc <span style="color:#666">==</span> <span style="color:#a2f">NULL</span>) { <span style="color:#080;font-style:italic">// 同じパターン
|
||||
</span><span style="color:#080;font-style:italic"></span> fprintf(stderr, <span style="color:#b44">&#34;グラフィックス内容を創作に失敗しました。</span><span style="color:#b62;font-weight:bold">\n</span><span style="color:#b44">&#34;</span>);
|
||||
<span style="color:#a2f;font-weight:bold">return</span> <span style="color:#666">-</span><span style="color:#666">1</span>;
|
||||
}
|
||||
|
||||
XImage <span style="color:#666">*</span>ximg <span style="color:#666">=</span> openimg(d, argv[<span style="color:#666">1</span>])<span style="color:#666">:</span>
|
||||
<span style="color:#a2f;font-weight:bold">if</span> (ximg <span style="color:#666">==</span> <span style="color:#a2f">NULL</span>) { <span style="color:#080;font-style:italic">// また、同じパターン
|
||||
</span><span style="color:#080;font-style:italic"></span> fprintf(stderr, <span style="color:#b44">&#34;画像を開けられません: %s</span><span style="color:#b62;font-weight:bold">\n</span><span style="color:#b44">&#34;</span>, argv[<span style="color:#666">1</span>]);
|
||||
XFreeGC(d, gc);
|
||||
XCloseDisplay(d);
|
||||
<span style="color:#a2f;font-weight:bold">return</span> <span style="color:#666">-</span><span style="color:#666">1</span>;
|
||||
}
|
||||
|
||||
<span style="color:#080;font-style:italic">// などなど
|
||||
</span><span style="color:#080;font-style:italic"></span>
|
||||
<span style="color:#a2f;font-weight:bold">return</span> <span style="color:#666">0</span>;
|
||||
}
|
||||
</code></pre><p><a href="https://gitler.moe/suwako/mivfx/src/branch/master/main.c">実際、C言語の開発者は運命のピラミッドを作る事は珍しいです。</a><br />
|
||||
この問題は主にWeb開発で多く起こります。<br />
|
||||
<a href="https://gitler.moe/tak4/bibis/src/branch/master/data-post.php">ですから、PHPの例えはご覧下さい。</a></p>
|
||||
<pre><code lang=""> <span style="color:#b8860b">$thread_title</span> <span style="color:#666">=</span> <span style="color:#b44">&#39;&#39;</span>;
|
||||
<span style="color:#a2f;font-weight:bold">if</span> (<span style="color:#b8860b">$thread_id</span> <span style="color:#666">&gt;</span> <span style="color:#b44">&#39;&#39;</span>) {
|
||||
<span style="color:#b8860b">$thread_title</span> <span style="color:#666">=</span> load_post_title_by_id(<span style="color:#b8860b">$thread_id</span>);
|
||||
<span style="color:#a2f;font-weight:bold">if</span> (<span style="color:#666">!</span><span style="color:#b8860b">$thread_title</span> <span style="color:#666">&gt;</span> <span style="color:#b44">&#39;&#39;</span>) {
|
||||
<span style="color:#b8860b">$thread_title</span> <span style="color:#666">=</span> <span style="color:#b44">&#39;無題#&#39;</span> <span style="color:#666">.</span> mb_substr(<span style="color:#b8860b">$thread_id</span>, <span style="color:#666">0</span>, <span style="color:#666">7</span>);
|
||||
}
|
||||
}
|
||||
</code></pre><p>少しだけ変わります。</p>
|
||||
<pre><code lang=""> <span style="color:#b8860b">$thread_title</span> <span style="color:#666">=</span> <span style="color:#b44">&#39;&#39;</span>;
|
||||
|
||||
<span style="color:#a2f;font-weight:bold">if</span> (<span style="color:#b8860b">$threadid</span> <span style="color:#666">!=</span> <span style="color:#b44">&#39;&#39;</span>) { <span style="color:#080;font-style:italic">// 文字列で「&gt;」を使用すると、バグが発生する可能性があります。
|
||||
</span><span style="color:#080;font-style:italic"></span> <span style="color:#b8860b">$thread_title</span> <span style="color:#666">=</span> load_post_title_by_id(<span style="color:#b8860b">$threadid</span>);
|
||||
}
|
||||
|
||||
<span style="color:#a2f;font-weight:bold">if</span> (<span style="color:#b8860b">$thread_title</span> <span style="color:#666">!=</span> <span style="color:#b44">&#39;&#39;</span>) { <span style="color:#080;font-style:italic">// !$thread_title &gt; &#39;&#39; はかなりおかしいので、これも修正しました。
|
||||
</span><span style="color:#080;font-style:italic"></span> <span style="color:#b8860b">$thread_title</span> <span style="color:#666">=</span> <span style="color:#b44">&#39;無題#&#39;</span> <span style="color:#666">.</span> mb_substr(<span style="color:#b8860b">$threadid</span>, <span style="color:#666">0</span>, <span style="color:#666">7</span>);
|
||||
}
|
||||
</code></pre><p>以上</p>
|
||||
|
||||
|
||||
</content>
|
||||
</entry>
|
||||
|
||||
<entry>
|
||||
<id>blog/sp-112.gmi</id>
|
||||
<author><name>凛</name></author>
|
||||
|
@ -154,45 +275,5 @@
|
|||
</content>
|
||||
</entry>
|
||||
|
||||
<entry>
|
||||
<id>blog/spliti-210.gmi</id>
|
||||
<author><name>凛</name></author>
|
||||
<title type="html">【076】spliti 2.1.0登場</title>
|
||||
<published>2023-11-15T00:00:00Z</published>
|
||||
|
||||
<category term="jp"></category>
|
||||
|
||||
<category term="blog"></category>
|
||||
|
||||
<category term="ウエブ開発"></category>
|
||||
|
||||
<category term="076"></category>
|
||||
|
||||
<category term="spliti"></category>
|
||||
|
||||
<link href="gemini://technicalsuwako.moe/blog/spliti-210.gmi" rel="alternate"></link>
|
||||
<content type="html">
|
||||
|
||||
|
||||
|
||||
<h2 id="spliti">splitiって何?</h2>
|
||||
<p>splitiはMixiのフェイクニュース部分向けプライバシーUIです。</p>
|
||||
<h2 id="heading">変更</h2>
|
||||
<ul>
|
||||
<li>出版社ページを追加</li>
|
||||
<li>出版社ページのページネーション</li>
|
||||
<li>カテゴリーのページネーション</li>
|
||||
<li>つぶやきを見るページ(list_quote.pl)を追加</li>
|
||||
</ul>
|
||||
<h2 id="heading-1">ソースコード</h2>
|
||||
<p><a href="https://gitler.moe/suwako/spliti">Gitler</a></p>
|
||||
<h2 id="heading-2">公式インスタンス</h2>
|
||||
<p><a href="">https://mixi.076.moe/</a></p>
|
||||
<p>以上</p>
|
||||
|
||||
|
||||
</content>
|
||||
</entry>
|
||||
|
||||
|
||||
</feed>
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
# 記事一覧
|
||||
|
||||
=> /blog/programming-pyramid-of-doom.gmi 2023年12月05日 【プログラミング】アドバイス1:運命のピラミッドを回避
|
||||
=> /blog/sp-112.gmi 2023年12月01日 【076】sp 1.1.2登場
|
||||
=> /blog/sp-111.gmi 2023年12月01日 【076】sp 1.1.1登場
|
||||
=> /blog/sp-110.gmi 2023年12月01日 【076】sp 1.1.0登場
|
||||
|
|
|
@ -0,0 +1,114 @@
|
|||
=> /blog.gmi ブログ一覧へ
|
||||
|
||||
#【プログラミング】アドバイス1:運命のピラミッドを回避
|
||||
投稿日:2023-12-05
|
||||
|
||||
プログラミングしたら、気づかずに運命のピラミッドを作る可能性が非常に高いです。
|
||||
これを回避した方が良いと思います。
|
||||
|
||||
## 運命のピラミッドとは?
|
||||
|
||||
ブログラミングで、運命のピラミッドとは、ネストされたインデントの多くのレベルを使用し、コードが読みにくくなる事です。
|
||||
例えば、下記のC言語のコードは運命のピラミッドの問題は発生します。
|
||||
|
||||
```c
|
||||
int main(int argc, char **argv) {
|
||||
if (argc >= 2) {
|
||||
Display *d = XOpenDisplay(NULL);
|
||||
if (d != NULL) {
|
||||
int src = DefaultScreen(d);
|
||||
Window w = XCreateSimpleWindow(d, RootWindow(d, scr), 0, 0, 500, 500, 1, BlackPixel(d, scr), WhitePixel(d, scr));
|
||||
XSelectInput(d, w, ExposureMask | KeyPressMask);
|
||||
XMapWindow(d, w);
|
||||
XFlush(d);
|
||||
|
||||
GC gc = XCreateGC(d, w, 0, NULL);
|
||||
if (gc != NULL) {
|
||||
XImage *ximg = openimg(d, argv[1]):
|
||||
if (ximg != NULL) {
|
||||
// などなど
|
||||
}
|
||||
} else {
|
||||
fprintf(stderr, "グラフィックス内容を創作に失敗しました。\n");
|
||||
}
|
||||
} else {
|
||||
fprintf(stderr, "画像を開けられません。\n");
|
||||
}
|
||||
} else {
|
||||
printf("使用方法: %s <画像ファイル>\n", argv[0]);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
|
||||
変わりに、下記のコードを書いた方が良いです。
|
||||
|
||||
```c
|
||||
int main(int argc, char **argv) {
|
||||
if (argc < 2) { // argcは2つ以下の場合、続行する意味はありません。
|
||||
printf("使用方法: %s <画像ファイル>\n", argv[0]);
|
||||
return 1;
|
||||
}
|
||||
|
||||
Display *d = XOpenDisplay(NULL);
|
||||
if (d == NULL) { // 同様に、DisplayがNULLの場合、続行する意味はありません。
|
||||
fprintf(stderr, "画像を開けられません。\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
int src = DefaultScreen(d);
|
||||
Window w = XCreateSimpleWindow(d, RootWindow(d, scr), 0, 0, 500, 500, 1, BlackPixel(d, scr), WhitePixel(d, scr));
|
||||
XSelectInput(d, w, ExposureMask | KeyPressMask);
|
||||
XMapWindow(d, w);
|
||||
XFlush(d);
|
||||
|
||||
GC gc = XCreateGC(d, w, 0, NULL);
|
||||
if (gc == NULL) { // 同じパターン
|
||||
fprintf(stderr, "グラフィックス内容を創作に失敗しました。\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
XImage *ximg = openimg(d, argv[1]):
|
||||
if (ximg == NULL) { // また、同じパターン
|
||||
fprintf(stderr, "画像を開けられません: %s\n", argv[1]);
|
||||
XFreeGC(d, gc);
|
||||
XCloseDisplay(d);
|
||||
return -1;
|
||||
}
|
||||
|
||||
// などなど
|
||||
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
|
||||
=> https://gitler.moe/suwako/mivfx/src/branch/master/main.c 実際、C言語の開発者は運命のピラミッドを作る事は珍しいです。
|
||||
この問題は主にWeb開発で多く起こります。
|
||||
=> https://gitler.moe/tak4/bibis/src/branch/master/data-post.php ですから、PHPの例えはご覧下さい。
|
||||
|
||||
```php
|
||||
$thread_title = '';
|
||||
if ($thread_id > '') {
|
||||
$thread_title = load_post_title_by_id($thread_id);
|
||||
if (!$thread_title > '') {
|
||||
$thread_title = '無題#' . mb_substr($thread_id, 0, 7);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
少しだけ変わります。
|
||||
|
||||
```php
|
||||
$thread_title = '';
|
||||
|
||||
if ($thread_id != '') { // 文字列で「>」を使用すると、バグが発生する可能性があります。
|
||||
$thread_title = load_post_title_by_id($thread_id);
|
||||
}
|
||||
|
||||
if ($thread_title != '') { // !$thread_title > '' はかなりおかしいので、これも修正しました。
|
||||
$thread_title = '無題#' . mb_substr($thread_id, 0, 7);
|
||||
}
|
||||
```
|
||||
|
||||
以上
|
|
@ -3,6 +3,7 @@
|
|||
# avatar = gemini://076.moe/static/suwako.jpg
|
||||
# description = テクニカル諏訪子様のtwtxtフィード
|
||||
# link = ホームページ gemini://technicalsuwako.moe
|
||||
2023-12-05T00:00:00Z09:00 【プログラミング】アドバイス1:運命のピラミッドを回避 - gemini://technicalsuwako.moe/blog/blog/programming-pyramid-of-doom.gmi
|
||||
2023-12-01T13:30:00Z09:00 【076】sp 1.1.2登場 - gemini://technicalsuwako.moe/blog/blog/sp-112.gmi
|
||||
2023-12-01T13:00:00Z09:00 【076】sp 1.1.1登場 - gemini://technicalsuwako.moe/blog/blog/sp-111.gmi
|
||||
2023-12-01T00:00:00Z09:00 【076】sp 1.1.0登場 - gemini://technicalsuwako.moe/blog/blog/sp-110.gmi
|
||||
|
|
|
@ -0,0 +1,114 @@
|
|||
title: 【プログラミング】アドバイス1:運命のピラミッドを回避
|
||||
author: 凛
|
||||
date: 2023-12-05
|
||||
tags: jp,blog,システム開発,php,c言語,プログラミング,ウエブ開発
|
||||
----
|
||||
プログラミングしたら、気づかずに運命のピラミッドを作る可能性が非常に高いです。\
|
||||
これを回避した方が良いと思います。
|
||||
|
||||
## 運命のピラミッドとは?
|
||||
|
||||
ブログラミングで、運命のピラミッドとは、ネストされたインデントの多くのレベルを使用し、コードが読みにくくなる事です。\
|
||||
例えば、下記のC言語のコードは運命のピラミッドの問題は発生します。
|
||||
|
||||
```c
|
||||
int main(int argc, char **argv) {
|
||||
if (argc >= 2) {
|
||||
Display *d = XOpenDisplay(NULL);
|
||||
if (d != NULL) {
|
||||
int src = DefaultScreen(d);
|
||||
Window w = XCreateSimpleWindow(d, RootWindow(d, scr), 0, 0, 500, 500, 1, BlackPixel(d, scr), WhitePixel(d, scr));
|
||||
XSelectInput(d, w, ExposureMask | KeyPressMask);
|
||||
XMapWindow(d, w);
|
||||
XFlush(d);
|
||||
|
||||
GC gc = XCreateGC(d, w, 0, NULL);
|
||||
if (gc != NULL) {
|
||||
XImage *ximg = openimg(d, argv[1]):
|
||||
if (ximg != NULL) {
|
||||
// などなど
|
||||
}
|
||||
} else {
|
||||
fprintf(stderr, "グラフィックス内容を創作に失敗しました。\n");
|
||||
}
|
||||
} else {
|
||||
fprintf(stderr, "画像を開けられません。\n");
|
||||
}
|
||||
} else {
|
||||
printf("使用方法: %s <画像ファイル>\n", argv[0]);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
|
||||
変わりに、下記のコードを書いた方が良いです。
|
||||
|
||||
```c
|
||||
int main(int argc, char **argv) {
|
||||
if (argc < 2) { // argcは2つ以下の場合、続行する意味はありません。
|
||||
printf("使用方法: %s <画像ファイル>\n", argv[0]);
|
||||
return 1;
|
||||
}
|
||||
|
||||
Display *d = XOpenDisplay(NULL);
|
||||
if (d == NULL) { // 同様に、DisplayがNULLの場合、続行する意味はありません。
|
||||
fprintf(stderr, "画像を開けられません。\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
int src = DefaultScreen(d);
|
||||
Window w = XCreateSimpleWindow(d, RootWindow(d, scr), 0, 0, 500, 500, 1, BlackPixel(d, scr), WhitePixel(d, scr));
|
||||
XSelectInput(d, w, ExposureMask | KeyPressMask);
|
||||
XMapWindow(d, w);
|
||||
XFlush(d);
|
||||
|
||||
GC gc = XCreateGC(d, w, 0, NULL);
|
||||
if (gc == NULL) { // 同じパターン
|
||||
fprintf(stderr, "グラフィックス内容を創作に失敗しました。\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
XImage *ximg = openimg(d, argv[1]):
|
||||
if (ximg == NULL) { // また、同じパターン
|
||||
fprintf(stderr, "画像を開けられません: %s\n", argv[1]);
|
||||
XFreeGC(d, gc);
|
||||
XCloseDisplay(d);
|
||||
return -1;
|
||||
}
|
||||
|
||||
// などなど
|
||||
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
|
||||
[実際、C言語の開発者は運命のピラミッドを作る事は珍しいです。](https://gitler.moe/suwako/mivfx/src/branch/master/main.c)\
|
||||
この問題は主にWeb開発で多く起こります。\
|
||||
[ですから、PHPの例えはご覧下さい。](https://gitler.moe/tak4/bibis/src/branch/master/data-post.php)
|
||||
|
||||
```php
|
||||
$thread_title = '';
|
||||
if ($thread_id > '') {
|
||||
$thread_title = load_post_title_by_id($thread_id);
|
||||
if (!$thread_title > '') {
|
||||
$thread_title = '無題#' . mb_substr($thread_id, 0, 7);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
少しだけ変わります。
|
||||
|
||||
```php
|
||||
$thread_title = '';
|
||||
|
||||
if ($threadid != '') { // 文字列で「>」を使用すると、バグが発生する可能性があります。
|
||||
$thread_title = load_post_title_by_id($threadid);
|
||||
}
|
||||
|
||||
if ($thread_title != '') { // !$thread_title > '' はかなりおかしいので、これも修正しました。
|
||||
$thread_title = '無題#' . mb_substr($threadid, 0, 7);
|
||||
}
|
||||
```
|
||||
|
||||
以上
|
読み込み中…
新しいイシューから参照