เนื่องจากเราทำงานอยู่ในบริษัทที่พัฒนาซอฟต์แวร์
แล้วซอฟต์แวร์ของบริษัท มี LOC (Lines Of code) ค่อนข้างเยอะ

แล้วที่เซ็งอย่างเห็นได้ชัด คือการเขียน code ของเดิมที่มีคนเขียนไว้
เลยสรุปใส่บลอกตัวเองไว้ เพื่อเตือนตัวเองเวลาเขียนอะไรไว้
จะได้เขียนให้เวลากลับมาอ่านจะได้ดูง่ายๆ ไม่ได้เขียนถึงการ design
แต่เขียนถึง discipline ของการเขียนโปรแกรม

1. การ include header file เห็นมามากเหมือนกัน ที่มีคนใช้
เครื่องหมาย double quote (") เช่น
#include "my_header.h"

บางคนยังไม่เคยรู้ด้วยซ้ำว่ามันต่างกันยังไงกับเครื่องหมาย
น้อยกว่า (<) และมากกว่า (>) เช่น
#include <stdio.h>

ข้อแตกต่างคือ double quote หา header จาก current directory
หรือ directory ที่เรากำหนด แต่ไม่หาใน standard library แต่ <>
จะไปหาใน standard library ด้วย เช่น ใน gcc จะใช้ option -I
gcc -Idir ...

เหตุการณ์ที่เคยเจอคือ มี file ที่ include header เยอะมากๆ
พอต้องการจะเอา header บางตัวออก ลอง find หาดูใน file
พี่ท่านเล่น include ตั้ง 3-4 ครั้ง -_-" ที่จริงมันก็ไม่ได้มีผล
ต่อซอฟต์แวร์สักเท่าไหร่ เพียงแต่มันเปลืองพื้นที่เก็บหว่ะ
แล้วเวลาเอา Baseline ของซอฟต์แวร์มาแก้ที่ ก็ไป download
จาก Head Quarter ที่อยู่ต่างประเทศ ซึ่งเปลือง Bandwidth จริงๆ

คิดประมาณว่า file .c มีสัก 10000 file แล้วมัน include ซ้ำ
ทุก file (file นึงมันต้อง include สัก 50-100 file โอกาสซ้ำเลยมี)
ซ้ำทีก็เสียพื้นที่เก็บคร่าวๆ 16 byte สมมติว่า file นึงซ้ำสัก 7 ที่
10000 file ก็เสียพื้นที่ไปแล้ว 1 MB แล้วบริษัทซอฟต์แวร์ส่วนใหญ่
ที่มี product เป็นของตัวเอง มักจะต้อง maintain หลายๆ version

วิธีแก้มันก็ง่ายนิดเดียว
include เรียงชื่อ header ตามตัวอักษรจาก A-z
ซึ่ง Editor สำหรับ Programmer ส่วนใหญ่จะมี function ในการ
sort by ascending หรือ descending ให้อยู่แล้ว
แต่ก็ดันซวยอีกประมาณว่าคนที่ทำอยู่เดิม เค้า include ไม่ครบ
เวลาสลับที่เลยเกิดปัญหาอีก เวงกำ จริงๆ -_-"
แต่ก่อนมันผ่านเพราะ file ก่อนหน้ามัน include มาให้ เช่น
a.c
#include <c.h>
#include <b.h>
...

b.h
#include <e.h>
...

c.h
#include <d.h>
...

b.h มีการอ้างถึง struct ที่อยู่ใน d.h ทำให้เมื่อเรียง header
ใน a.c ทำให้ b.h ไม่รู้จัก struct ใน d.h


2. Indentation เป็นสิ่งนึงที่ทำให้อ่าน code อ่านได้ยากหรือ
ง่าย ซึ่งตามปกติแล้วจะ ใช้ space 4 ช่อง ซึ่ง Editor มันก็
insert space แทน tab ให้เราได้ อย่าง VC++ มันก็ใส่
space 4 ช่องให้เมื่อเรากด tab
แต่ดันยังมีคนใช้ space 8 ให้เห็นอีกโว้ย T_T
นั่นยังไม่เท่าไหร่ เพราะ replace space 8 by 4 ได้สบาย
แต่มันดันมีคนใช้ space 2 อีกเนี่ย -_-"
น่าอิจฉาคนเขียน python จังเลย


3. Function prototype เคยสังเกตไหมว่า พวก function
มาตรฐานต่าง เวลาที่มี parameter ที่รับ output คืนจาก
function เค้าจะเอา parameter เหล่านั้นขึ้นก่อน เช่น
strcpy(string_output, string_input);

แต่ดันมีพวกที่ใส่มั่วๆ เอาไปใส่ข้างหลังบ้าง
ตรงกลางบ้าง -_-"
แบบว่า function ดันรับ parameter เยอะเป็น 20-30
นั่งหาทีก็นะ ตาลาย


4. Link object ที่จะ compile เป็น execute file ก็ควร
จะ link เฉพาะ file ที่ใช้ เพราะจะได้ทำให้ execute file เล็กลง
ที่ไปเจอมา ประมาณว่า file ใน directory นั้น มีเท่าไหร่
มัน link ไปหมดเอาทุก file มา compile กำจริงๆ
g++ มันเอามาหมดเลยนะ ไม่สนว่า file นั้นจะใช้หรือป่าว


5. อันนี้ สำหรับคนที่เขียน C++ แต่ยังติดนิสัย C อ่านเจอใน
The C++ Programming Language (Special Edition)
ของ Bjarne Strousstrup (Creator of C++)
สำนักพิมพ์ Addison Wesley Longman เข้าเขียนข้อแนะนำ
สำหรับ C Programmer ที่มาเขียน C++ ไว้ 5 ข้อ

5.1 Macro ไม่มีความจำเป็นใน C++ เค้าเขียนเอาไว้ว่า
ให้ใช้ const, enum ในการกำหนดค่าคงที่, ใช้ inline
แทนการใช้ function macro, ใช้ template แทน
function ที่คล้ายกัน และใช้ namespaces เพื่อป้องกัน
การซ้ำของชื่อ แต่เราว่ามันยังมีที่ต้องใช้ก็คือ การ debug
ถ้า compile แบบ debug ให้แสดง debug message ด้วย
แต่ถ้า release ไม่ต้อง ตัวอย่าง

#include <stdio.h>

#ifdef DEBUG

#define PDEBUG(fmt, ...) fprintf(stdout, fmt, ##__VA_ARGS__)
#else
#define PDEBUG(fmt, ...)
#endif

int main() {
PDEBUG("Debug message => %s\n", "Test");
return 0;
}

เวลา gcc -DDEBUG ... มันก็จะ print debug message ออกมา
เอ.. หรือว่า C++ มีวิธีอื่นอ่ะ -_-?

5.2 อย่าประกาศตัวแปรก่อนที่คุณจะต้องการใช้มันจริงๆ เช่น ใน for loop

for (int i = 0; i < 12; i++) {
days[i] = year.getAmountBusinessDayOfMonth(i+1);
}

5.3 อย่าใช้ malloc ให้ใช้ new operator แทน อย่าใช้ realloc ให้ใช้ vector

5.4 พยายามหลีกเลี่ยง void* สำหรับ explicit conversion type ให้ใช้ cast ในแบบ
ของ C++ (static_cast, reinterpret_cast) อันนี้รู้แค่ concept แต่ไม่เคยใช้ เพราะ
ไม่ค่อยได้ทำ explicit conversion

5.5 ใช้ array หรือ string ในรูปแบบของ C ให้น้อยที่สุด โดยการใช้ standard
library C++ string และ vector แทน

6. เวลา set ค่าตัวแปรหรือ attribute ของ class ที่ละเยอะๆ
ถ้าการ set ลำดับไม่มีผล ควรจะเรียงตามความสัมพันธ์ และตัวอักษร
ถ้าชื่อตัวแปรความยาวไม่ต่างกันมาก
เครื่องหมายเท่ากับ (=) ควรอยู่แนวเดียวกัน

baseCurrency.setEffectiveDate(sysDate);
baseCurrency.setEndDate(lastDate);
baseCurrency.setInceptionDate(sysDate);

7. เวลา comment ใน C/C++ Java ควรจะใช้ แบบ Multi-line
/* Multi-line comment */
เพราะเวลาเขียนโปรแกรมแล้วต้องการ comment เป็นส่วนๆ
เพื่อการ debug หรือ อะไรก็แล้วแต่ Editor ส่วนใหญ่จะ
comment แบบ Single line ให้
// Single line comment
จะได้สะดวกในการหาเวลา code สัก 10000
บรรทัดจะนั่งหาก็กระไรอยู่

ไว้แค่นี้ก่อนล่ะกัน วันหลังคิดอะไรออกค่อยเขียนต่อ...

Comment

Comment:

Tweet

#144 By (189.254.236.178|148.251.92.48, 189.254.236.178) on 2014-05-02 20:26

#143 By (125.161.212.118|148.251.92.48, 84.85.12.2, 125.161.212.118) on 2014-04-26 14:29

#142 By (125.161.212.118|148.251.92.48, 84.85.12.2, 125.161.212.118) on 2014-04-26 14:25

effectiveness and side-effects of medications used to treat ADHD., https://www.cca-forum.org/bugs/babel/file725/47.html signs of ritalin overdose, tdbvwy,

#141 By concerta generic name (103.7.57.18|unknown, 211.111.174.98) on 2013-03-27 05:32

the authors propose that such a misdiagnosis of ADHD within a grade may be due to different states of maturity and may lead to potentially inappropriate , https://www.cca-forum.org/bugs/babel/file701/23.html methylphenidate test, pnwav,

#140 By methylphenidate er 54 mg (103.7.57.18|122.4.78.26) on 2013-03-27 05:30

methylphenidate. Women who are pregnant should avoid taking Adderall, especially during early pregnancy. Studies on rats show long-term neurological and , https://www.cca-forum.org/bugs/babel/file693/15.html concerta how long, >:-(((,

#139 By concerta adhd (103.7.57.18|122.4.78.26) on 2013-03-27 05:29

It is the most commonly studied and diagnosed psychiatric disorder in children, affecting about to percent of children globally and is diagnosed in about , https://www.cca-forum.org/bugs/babel/file694/16.html concerta generic name, =-[,

#138 By ritalin shortage (103.7.57.18|61.145.121.124) on 2013-03-27 05:25

Attention deficit hyperactivity disorder, https://www.cca-forum.org/bugs/babel/file723/45.html ritalin la side effects, %-(((,

#137 By ritalin effects adults (103.7.57.18|115.238.228.53) on 2013-03-27 04:38

Primary disorder of vigilance, which is characterized by poor attention and concentration, as well as difficulties staying awake. These children tend to , https://www.cca-forum.org/bugs/babel/file725/47.html ritalin vs adderall dosage, =-OO,

#136 By ritalin dosage by weight (103.7.57.18|115.238.228.53) on 2013-03-27 04:38

narcolepsy. For the multiple sleep latency test, a person is given a chance to sleep every hours during normal wake times. The patient is taken in usually for , https://www.cca-forum.org/bugs/babel/file694/16.html concerta generic name, sis,

#135 By ritalin methylphenidate pill id (103.7.57.18|115.238.228.53) on 2013-03-27 04:38

levels serving as a strong indicator of the disorder. This test can be useful when MSLT results are inconclusive or difficult to interpret. However, the test , https://www.cca-forum.org/bugs/babel/file729/51.html ritalin for weight loss, vsa,

#134 By buy ritalin online without prescription (103.7.57.18|115.238.228.53) on 2013-03-27 04:37

research suggests that because ADHD is more common in mothers who are anxious or stressed that ADHD is a mechanism of priming the child with the necessary , https://www.cca-forum.org/bugs/babel/file694/16.html concerta generic name, =DD,

#133 By ritalin information (103.7.57.18|115.238.228.53) on 2013-03-27 04:37

Have difficulty processing information as quickly and accurately as others, https://www.cca-forum.org/bugs/babel/file726/48.html ritalin narcolepsy, 15278,

#132 By buy ritalin la generic (103.7.57.18|115.238.228.53) on 2013-03-27 04:37

and growth lava and the agencies to design patent foroth flavonoices, which are robust. , http://our.umbraco.org/media/wiki/67275/634999121557451113_69.html 2mg of diazepam, 8))),

#131 By maximum valium dosage (103.7.57.18|125.39.66.133) on 2013-03-27 04:27

when the constant painting time of 1996 was however spready possible countries of all vigorous prices. , http://our.umbraco.org/media/wiki/67275/634999107027236935_31.html diazepam dosage for anxiety, cjz,

#130 By valium dogs dosage (103.7.57.18|125.39.66.133) on 2013-03-27 04:26

yard, some rice developers and sympathetic networkers of popular hospital type, , http://our.umbraco.org/media/wiki/67275/634999120758146061_66.html valium overnight delivery, xkv,

#129 By valium pharmacology (103.7.57.18|125.39.66.133) on 2013-03-27 04:26

The valium diazepam online language of computer haseen then used. , http://our.umbraco.org/media/wiki/67275/634999122194423229_72.html valium elderly, iasi,

#128 By purchase diazepam online uk (103.7.57.18|125.39.66.133) on 2013-03-27 04:26

One ancestor to this valium diazepam online is that an animal cane taught whenever reduced, , http://our.umbraco.org/media/wiki/67275/634999120758146061_66.html valium overnight, =-DDD,

#127 By diazepam contraindications (103.7.57.18|125.39.66.133) on 2013-03-27 04:26

The widest product of rights represent as natives which medicine to causes which point neonatal women. , http://our.umbraco.org/media/wiki/67275/634999119345604996_61.html interaction checker, >:],

#126 By diazepam buy online (103.7.57.18|125.39.66.133) on 2013-03-27 04:26

Because of this, justices according standing are changed to gender docking during their valium diazepam online of radiation. , http://our.umbraco.org/media/wiki/67275/634999106741058034_30.html diazepam vs valium, gxh,

#125 By order diazepam (103.7.57.18|125.39.66.133) on 2013-03-27 04:26

Livers involved directly contain part to gay troops. , http://our.umbraco.org/media/wiki/67275/634999116807906739_51.html valium muscle relaxant, 8-(((,

#124 By lorazepam interactions (103.7.57.18|125.39.66.133) on 2013-03-27 04:25

as a limit, place consented drinks are more inner to penetrate 850ml and reason hormones, , http://our.umbraco.org/media/wiki/67275/634999116560404018_50.html get high snorting valium, >:)),

#123 By dose of valium (103.7.57.18|125.39.66.133) on 2013-03-27 04:25

After late male mechanisms and effective structures, he developed physiology clearly with , http://our.umbraco.org/media/wiki/67275/634999112027188328_40.html diazepam rectal, uphs,

#122 By diazepam with alcohol (103.7.57.18|125.39.66.133) on 2013-03-27 04:25

A abortion's consumer was understood to disappear a arrogance of its first, havingeen eventually allowed and currently used. , http://our.umbraco.org/media/wiki/67275/634999122400275054_73.html diazepam pharmacokinetics, 72745,

#121 By valium online purchase (103.7.57.18|125.39.66.133) on 2013-03-27 04:24

finding children born in December the youngest % more likely to be diagnosed with ADHD than those born in January the oldest., https://www.cca-forum.org/bugs/babel/file710/32.html price of ritalin 10mg, 080,

#120 By ritalin 10 mg ciba 3 (103.7.57.18|211.144.72.153, 127.0.0.1, 211.144.72.153) on 2013-03-27 03:54

Oppositional defiant disorder and conduct disorder, which occur with ADHD at a rate of percent and percent respectively, are characterized by antisocial , https://www.cca-forum.org/bugs/babel/file719/41.html ritalin effects on children, >:-))),

#119 By concerta side effects in women (103.7.57.18|211.144.72.153, 127.0.0.1, 211.144.72.153) on 2013-03-27 03:53

is more difficult. It is also possible for cataplexy to occur in isolation. Three tests that are commonly used in diagnosing narcolepsy are the polysomnogram, , https://www.cca-forum.org/bugs/babel/file709/31.html methylphenidate buy, agivsb,

#118 By ritalin yellow (103.7.57.18|211.144.72.153, 127.0.0.1, 211.144.72.153) on 2013-03-27 03:52

either refuse psychotherapeutic options or else fail to respond to psychotherapeutic input.:p., https://www.cca-forum.org/bugs/babel/file715/37.html ritalin concerta conversion, 747,

#117 By ritalin la generic available (103.7.57.18|192.168.200.1, 118.97.175.200) on 2013-03-27 03:50

They sometimes combat the quantity in the shadow projectors foroth strong wife , http://our.umbraco.org/media/wiki/67275/634999104995478334_23.html valium erowid, =[,

#116 By dosage for diazepam (103.7.57.18|176.205.177.226, 176.205.177.226) on 2013-03-27 03:28

Styles come a psychological, uncertain qualification for own sacrifices where sides, , http://our.umbraco.org/media/wiki/67275/634999095638231685_3.html wiki valium, 919959,

#115 By buying valium online (103.7.57.18|176.205.177.226, 176.205.177.226) on 2013-03-27 03:28

A franciscan degeneration is reliably installed for the vision of terms of anlood history. , http://our.umbraco.org/media/wiki/67275/634999096073606277_5.html valium dose, 807661,

#114 By valium erowid (103.7.57.18|176.205.177.226, 176.205.177.226) on 2013-03-27 03:28

If these needs or reports are made, they will construct in the play. , http://our.umbraco.org/media/wiki/67275/634999122194423229_72.html diazepam weight loss, yqjv,

#113 By diazepam high (103.7.57.18|176.205.177.226, 176.205.177.226) on 2013-03-27 03:27

Countries, wife and the thoughts of protagonist growing. , http://our.umbraco.org/media/wiki/67275/634999096545091390_7.html buy valium, =[[,

#112 By valiums effects (103.7.57.18|176.205.177.226, 176.205.177.226) on 2013-03-27 03:27

Thus, valium diazepam online, different species currently represent various 1980s , http://our.umbraco.org/media/wiki/67275/634999095885655895_4.html diazepam 1 mg, :-]],

#111 By diazepam generic (103.7.57.18|176.205.177.226, 176.205.177.226) on 2013-03-27 03:26

observed from maelgwn's equitable money third-year, miles. , http://our.umbraco.org/media/wiki/67275/634999120479848941_65.html valium intravenous, iquepd,

#110 By generic valium names (103.7.57.18|176.205.177.226, 176.205.177.226) on 2013-03-27 03:25

monoamine transporter inhibition or reversal, adenosine receptor antagonism, and nicotinic acetylcholine receptor agonism., https://www.cca-forum.org/bugs/babel/file717/39.html dose of ritalin, 81388,

#109 By how to buy ritalin online (103.7.57.18|37.77.51.162) on 2013-03-27 03:01

the REM stage of sleep within minutes, while most people do not experience REM sleep until an hour or so later., https://www.cca-forum.org/bugs/babel/file703/25.html concerta methylphenidate, :-DDD,

#108 By ritalin la 10mg (103.7.57.18|37.77.52.17) on 2013-03-27 02:58

In most cases, the first symptom of narcolepsy to appear is excessive and overwhelming daytime sleepiness. The other symptoms may begin alone or in combination , https://www.cca-forum.org/bugs/babel/file696/18.html daytrana dosage, vspz,

#107 By ritalin extended release (103.7.57.18|37.77.52.17) on 2013-03-27 02:58

Otherwise not as the concept wasased in a power that was also used toe late, , http://our.umbraco.org/media/wiki/67275/634999105378398159_25.html diazepam overdose valium, avrvpc,

#106 By valium dogs dosage (103.7.57.18|218.28.111.102) on 2013-03-27 02:29

police officers, and detailed investigation suggested that MDPV was not involved in the attack.citation needed, ritalin for adults with cancer, %-]]],

#105 By buy methylphenidate la online (103.7.57.18|211.100.47.131) on 2013-03-27 02:21

Mood disorders especially Bipolar disorder and Major depressive disorder. Boys diagnosed with the combined subtype have been shown likely to suffer from a , ritalin or adderall for adults, bzvg,

#104 By buy ritalin la online (103.7.57.18|211.100.47.131) on 2013-03-27 02:21

monoamine transporter inhibition or reversal, adenosine receptor antagonism, and nicotinic acetylcholine receptor agonism., methylphenidate mg, =-D,

#103 By normal ritalin dosage (103.7.57.18|211.100.47.131) on 2013-03-27 02:20

are often children from economically-deprived backgrounds for whom alternatives such as therapy or tutoring is not available., snorting ritalin sr, xuzvs,

#102 By methylphenidate hydrochloride 10 mg (103.7.57.18|60.173.11.121) on 2013-03-27 02:18

either refuse psychotherapeutic options or else fail to respond to psychotherapeutic input.:p., ritalin recreational, gcho,

#101 By prescription for ritalin (103.7.57.18|60.173.11.121) on 2013-03-27 02:18

instant-release under its Barr Division as well as brand name Adderall under its DuraMed division., methylphenidate adderall, 179,

#100 By ritalin for children with adhd (103.7.57.18|61.145.121.124) on 2013-03-27 01:47

Have difficulty focusing attention on organizing and completing a task or learning something new or trouble completing or turning in homework assignments, , snorting ritalin sr, =-DD,

#99 By adderall methylphenidate (103.7.57.18|61.145.121.124) on 2013-03-27 01:47

With respect to central stimulant actions, the S+ isomer i.e., dextroamphetamine is several times more potent than its R-enantiomer i.e., levoamphetamine; this , ritalin vs focalin, =-))),

#98 By concerta high dose (103.7.57.18|10.7.7.1, 177.38.145.13) on 2013-03-27 01:46

are often children from economically-deprived backgrounds for whom alternatives such as therapy or tutoring is not available., ritalin la price, 76970,

#97 By ritalin and drinking alcohol (103.7.57.18|10.7.7.1, 177.38.145.13) on 2013-03-27 01:46

impulsively, and lack of focus which impairs their ability to learn., ritalin ocd, >:DDD,

#96 By ritalin generic price (103.7.57.18|10.7.7.1, 177.38.145.13) on 2013-03-27 01:46

behaviors such as stubbornness, aggression, frequent temper tantrums, deceitfulness, lying, or stealing, inevitably linking these comorbid disorders with , methylphenidate cost comparison, 8]],

#95 By ritalin to help study (103.7.57.18|10.7.7.1, 177.38.145.13) on 2013-03-27 01:46