คำถามติดแท็ก variables

ตัวแปรหรือสเกลาร์คือที่เก็บสินค้าที่จับคู่กับชื่อสัญลักษณ์ที่เกี่ยวข้อง (ตัวระบุ) ซึ่งมีปริมาณหรือข้อมูลที่รู้จักหรือไม่รู้จักบางอย่างที่เรียกว่าค่า

10
ทำไมรหัสสะอาดแนะนำให้หลีกเลี่ยงตัวแปรที่ป้องกัน?
รหัสที่ชัดเจนแนะนำให้หลีกเลี่ยงตัวแปรที่ได้รับการป้องกันในส่วน "ระยะทางแนวตั้ง" ของบท "การจัดรูปแบบ": แนวคิดที่เกี่ยวข้องอย่างใกล้ชิดควรเก็บไว้ในแนวตั้งซึ่งกันและกัน เห็นได้ชัดว่ากฎนี้ใช้ไม่ได้กับแนวคิดที่อยู่ในไฟล์แยกต่างหาก แต่แล้วแนวคิดที่เกี่ยวข้องอย่างใกล้ชิดไม่ควรแยกออกเป็นไฟล์ต่าง ๆ เว้นแต่คุณจะมีเหตุผลที่ดีมาก อันที่จริงนี่เป็นหนึ่งในเหตุผลที่มีการป้องกันตัวแปรควรหลีกเลี่ยง อะไรคือเหตุผล?

6
ตัวแปรควรชื่อ Id หรือ ID หรือไม่ [ปิด]
นี่เป็นเรื่องอวดรู้เล็กน้อย แต่ฉันเคยเห็นบางคนใช้Idใน: private int userId; public int getUserId(); และอื่น ๆ ใช้: private int userID; public int getUserID(); หนึ่งในนั้นเป็นชื่อที่ดีกว่าชื่ออื่นหรือไม่? ทำไม? ฉันเคยเห็นสิ่งนี้ทำกันอย่างไม่สอดคล้องในโครงการขนาดใหญ่ ถ้าฉันจะตั้งมาตรฐานที่คนส่วนใหญ่จะคุ้นเคยกับ? มาตรฐานดั้งเดิมคืออะไร?


13
เราควรกำจัดตัวแปรท้องถิ่นถ้าทำได้หรือไม่?
ตัวอย่างเช่นเพื่อให้ซีพียูยังคงอยู่ใน Android ฉันสามารถใช้รหัสเช่นนี้: PowerManager powerManager = (PowerManager)getSystemService(POWER_SERVICE); WakeLock wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "abc"); wakeLock.acquire(); แต่ฉันคิดว่าตัวแปรท้องถิ่นpowerManagerและwakeLockสามารถกำจัดได้: ((PowerManager)getSystemService(POWER_SERVICE)) .newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyWakelockTag") .acquire(); ฉากที่คล้ายกันจะปรากฏในมุมมองการแจ้งเตือนของ iOS เช่นจาก UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"my title" message:@"my message" delegate:nil cancelButtonTitle:@"ok" otherButtonTitles:nil]; [alert show]; -(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{ [alertView release]; } ไปที่: [[[UIAlertView alloc] initWithTitle:@"my title" message:@"my message" delegate:nil cancelButtonTitle:@"ok" …

14
ประวัติการใช้“ foo” และ“ bar” ในซอร์สโค้ดคืออะไร?
ทำไมตัวอย่างโค้ดจำนวนมากโดยเฉพาะบทช่วยสอนใช้ชื่อ "Foo" และ "Bar" บ่อยครั้ง มันเกือบจะเป็นมาตรฐาน ตัวอย่างเช่น: void foo(char* bar) { printf("%s", bar); }

12
ฉันควรใช้ตัวแปรซ้ำหรือไม่
ฉันควรใช้ตัวแปรซ้ำหรือไม่ ฉันรู้ว่าวิธีปฏิบัติที่ดีที่สุดหลายอย่างบอกว่าคุณไม่ควรทำในภายหลังเมื่อนักพัฒนาซอฟต์แวร์คนอื่นกำลังดีบักโค้ดและมีตัวแปร 3 ตัวที่มีลักษณะเหมือนกันและความแตกต่างเพียงอย่างเดียวคือพวกมันถูกสร้างขึ้นในสถานที่ต่าง ๆ ในรหัส สับสน. การทดสอบหน่วยเป็นตัวอย่างที่ดีของสิ่งนี้ แต่ผมไม่ทราบว่าการปฏิบัติที่ดีที่สุดคือใช้เวลาส่วนใหญ่กับมัน ตัวอย่างเช่นพวกเขาบอกว่าไม่ได้ "แทนที่" พารามิเตอร์วิธีการ แนวทางปฏิบัติที่ดีที่สุดคือแม้จะขัดกับโมฆะตัวแปรก่อนหน้านี้ (ใน Java มี Sonar ที่ให้คำเตือนเมื่อคุณกำหนดให้nullกับตัวแปรที่คุณไม่จำเป็นต้องเรียกมันไปที่ตัวรวบรวมขยะตั้งแต่ Java 6 คุณไม่สามารถควบคุมได้เสมอ คำเตือนใดปิดอยู่ส่วนใหญ่เป็นค่าเริ่มต้น)

15
รหัสสะอาด: ฟังก์ชั่นที่มีพารามิเตอร์น้อย [ปิด]
ฉันอ่านบทแรกของรหัสสะอาดโดยโรเบิร์ตซีมาร์ตินและดูเหมือนว่าฉันจะค่อนข้างดี แต่ฉันมีข้อสงสัยในส่วนหนึ่งมันก็บอกว่ามันเป็นสิ่งที่ดี (ทางปัญญา) ว่าฟังก์ชั่นควรมีพารามิเตอร์น้อย เท่าที่เป็นไปได้มันยังแสดงให้เห็นว่าพารามิเตอร์ 3 ตัวหรือมากกว่านั้นมากเกินไปสำหรับฟังก์ชั่น (ซึ่งฉันคิดว่ามันพูดเกินจริงและอุดมการณ์) ดังนั้นฉันจึงเริ่มสงสัย ... ทั้งแนวปฏิบัติในการใช้ตัวแปรส่วนกลางและการส่งผ่านข้อโต้แย้งจำนวนมากในฟังก์ชั่นอาจเป็นวิธีปฏิบัติในการเขียนโปรแกรมที่ไม่ดี แต่การใช้ตัวแปรทั่วโลกสามารถลดจำนวนพารามิเตอร์ในฟังก์ชันได้อย่างมาก ... ดังนั้นฉันอยากได้ยินสิ่งที่คุณคิดเกี่ยวกับมันมันมีค่าใช้ตัวแปรทั่วโลกเพื่อลดจำนวนพารามิเตอร์ของฟังก์ชั่นหรือไม่? ในกรณีใดบ้าง สิ่งที่ฉันคิดคือมันขึ้นอยู่กับปัจจัยหลายประการ: ขนาดรหัสต้นฉบับ จำนวนพารามิเตอร์โดยเฉลี่ยของฟังก์ชั่น จำนวนฟังก์ชั่น ความถี่ที่ใช้ตัวแปรเดียวกัน ในความคิดของฉันถ้าขนาดซอร์สโค้ดมีขนาดค่อนข้างเล็ก (เช่นน้อยกว่า 600 บรรทัดของโค้ด) มีฟังก์ชั่นมากมายตัวแปรเดียวกันถูกส่งผ่านเป็นพารามิเตอร์และฟังก์ชั่นมีพารามิเตอร์มากมายจากนั้นใช้ตัวแปรทั่วโลกจะคุ้มค่า แต่ฉัน อยากรู้ว่า ... คุณแบ่งปันความคิดเห็นของฉัน? คุณคิดอย่างไรกับกรณีอื่นที่ซอร์สโค้ดใหญ่กว่า ฯลฯ ? ปล . ฉันเห็นโพสต์นี้ชื่อเรื่องนั้นคล้ายกันมาก แต่เขาไม่ถามสิ่งที่ฉันอยากรู้

7
วิธีตั้งชื่อตัวแปรเมื่อคำนั้นเป็นทั้งคำนามและคำกริยา
ฉันพบปัญหากรณีมุมด้วยคำแนะนำทั่วไปของ: คำนามสำหรับตัวแปร คำกริยาสำหรับฟังก์ชั่น โดยเฉพาะฉันมีกรณีที่คำไม่ชัดเจน - มันอาจเป็นทั้งคำกริยาหรือคำนาม และในบางกรณีเมื่อเราพูดถึงแอปพลิเคชันมันจะถูกใช้ทั้งสองวิธีในประโยคเดียวกัน ความตั้งใจของฉันคือเพื่อให้แน่ใจว่าโปรแกรมจะยังคงสามารถอ่านได้สำหรับนักพัฒนาในอนาคตเช่นเดียวกับตัวฉันเองเมื่อฉันกลับไปยังส่วนของรหัสเดือนต่อมา batteryหนึ่งในตัวอย่างที่เป็นด้วย A batteryมีchargeและคุณยังสามารถcharge()ใช้แบตเตอรี่ได้อีกด้วย ฉันคิดว่าการมีทั้งคู่Battery.ChargeและBattery.Charge(value)จะสับสนกับนักพัฒนาในอนาคต โซลูชันปัจจุบันของฉันคือเลือกคำที่แตกต่างสำหรับกรณีเหล่านี้หนึ่งหรือทั้งสองกรณี (ตัวแปรและฟังก์ชัน) ปัญหาของฉันด้วยวิธีการที่เป็นBatteryตัวแปรวัตถุและฟังก์ชั่นจะไม่สอดคล้องกับการอภิปรายการออกแบบที่เกี่ยวข้องกับการ chargeBattery คำถามของฉันคือถ้ามีอีกวิธีที่ดีกว่า / จัดการความขัดแย้งนี้ในการตั้งชื่อแบบแผนการ? อ่านเพิ่มเติมบางเรื่อง ไม่มีใครตอบคำถามของฉันโดยเฉพาะ แนวทางการตั้งชื่อวิธีการกระชับความหมายที่มีความหมาย แบบแผนการตั้งชื่อตัวแปร คำตอบที่เลือกจากhttps://softwareengineering.stackexchange.com/questions/14169/what-naming-guidelines-do-you-follow
48 naming  variables 

4
เหตุใดจึงมีบางภาษาที่มี 'โอเปอเรเตอร์' ชนิดตัวแปรอยู่?
ฉันหมายความว่าอย่างนี้: <?php $number1 = 5; // (Type 'Int') $operator1 = +; // (Type non-existent 'Operator') $number2 = 5; // (Type 'Int') $operator2 = *; // (Type non-existent 'Operator') $number3 = 8; // (Type 'Int') $test = $number1 $operator1 $number2 $operator2 $number3; //5 + 5 * 8. var_dump($test); ?> แต่ด้วยวิธีนี้: <?php …

12
การสะกดผิดโดยเจตนาเพื่อหลีกเลี่ยงคำที่สงวนไว้
ฉันมักจะเห็นรหัสที่มีการสะกดผิดโดยเจตนาของคำทั่วไปที่ดีขึ้นหรือแย่ลงกลายเป็นคำสงวน: klassหรือclazzสำหรับชั้นเรียน :Class clazz = ThisClass.class kountสำหรับการนับใน SQL:count(*) AS kount โดยส่วนตัวแล้วฉันพบว่าการอ่านนี้ลดลง ในทางปฏิบัติของฉันเองฉันไม่ได้พบมากเกินไปกรณีที่ชื่อที่ดีกว่าอาจจะไม่ได้ถูกนำมาใช้ - หรือitemClassrecordTotal ตัวอย่างจาก JavaDocs สำหรับClassแสดงสิ่งนี้ในพารามิเตอร์: public <U> Class<? extends U> asSubclass(Class<U> clazz) นี่แสดงให้เห็นถึงกรณีการใช้งานที่สมเหตุสมผลหรือไม่?

15
มันเป็นการปฏิบัติที่ไม่ถูกต้องหรือไม่ที่จะตั้งชื่อตัวแปรที่ไม่ได้ใช้ด้วยการขีดเส้นใต้เดี่ยว?
_บ่อยครั้งเมื่อไวยากรณ์ของภาษาต้องการให้ฉันชื่อตัวแปรที่ไม่เคยใช้ผมจะตั้งชื่อมันว่า ในใจของฉันมันช่วยลดความยุ่งเหยิงและให้ฉันมุ่งเน้นไปที่ตัวแปรที่มีความหมายในโค้ด ฉันคิดว่ามันจะไม่เป็นการรบกวนเพื่อสร้างผล "นอกสายตาจากใจ" ตัวอย่างทั่วไปที่ฉันทำคือการตั้งชื่อแบบสอบถามย่อยใน SQL SELECT * FROM ( SELECT * FROM TableA JOIN TableB ON TableA.ColumnB = TableB.ColumnB WHERE [ColumnA] > 10 ) _ --This name is required, but never used here ORDER BY ColumnC อีกตัวอย่างหนึ่งคือตัวแปรลูปที่ไม่ได้ใช้ array = [[] for _ in range(n)] # Defines a list of …

17
เป็นวิธีปฏิบัติที่ดีหรือไม่ที่จะตั้งชื่อตัวแปร“ return” ที่ส่งคืน [ปิด]
เป็นวิธีปฏิบัติที่ดีในการเรียกใช้ตัวแปรที่เมธอดส่งคืนด้วยชื่อตัวแปรresultหรือไม่? ตัวอย่างเช่น public Zorglub calculate() { Zorglub result = [...] [...] return result; } หรือฉันควรตั้งชื่อตามประเภทของมัน? public Zorglub calculate() { Zorglub zorglub = [...] [...] return zorglub; } ฉันเคยเห็นทั้งสองอย่างในป่าถ้าฉันต้องเลือกเหตุผลอะไรที่ทำให้ฉันชอบอดีตหรือหลัง (หรือชื่อที่ดีกว่า)? ฉันคิดเกี่ยวกับ Java เป็นหลัก

5
ตัวแปรใน C ++ เก็บประเภทของพวกเขาอย่างไร
หากฉันกำหนดตัวแปรประเภทหนึ่ง (ซึ่งเท่าที่ฉันรู้เพียงแค่จัดสรรข้อมูลสำหรับเนื้อหาของตัวแปร) มันจะติดตามชนิดของตัวแปรชนิดใดได้อย่างไร

6
ต้องการสมาชิกชั้นเรียนหรือผ่านการขัดแย้งระหว่างวิธีการภายใน?
สมมติว่าในส่วนส่วนตัวของคลาสมีค่าที่ใช้โดยวิธีส่วนตัวหลายวิธี คนชอบมีการกำหนดนี้เป็นตัวแปรสมาชิกสำหรับชั้นเรียนหรือผ่านมันเป็นอาร์กิวเมนต์สำหรับแต่ละวิธี - และทำไม ในอีกด้านหนึ่งฉันสามารถเห็นการโต้เถียงที่จะทำให้การลดสถานะ (เช่นตัวแปรสมาชิก) ในชั้นเรียนโดยทั่วไปเป็นสิ่งที่ดีแม้ว่าค่าเดียวกันจะถูกใช้ซ้ำหลายครั้งตลอดทั้งวิธีการเรียนดูเหมือนว่าจะเหมาะ ผู้สมัครเพื่อเป็นตัวแทนของรัฐในชั้นเรียนเพื่อให้รหัสชัดเจนขึ้นถ้าไม่มีอะไรอื่น แก้ไข: เพื่ออธิบายความเห็น / คำถามบางอย่างที่ยกขึ้นฉันไม่ได้พูดถึงค่าคงที่และนี่ไม่ได้เกี่ยวข้องกับกรณีเฉพาะ แต่เป็นเพียงสมมติฐานที่ฉันได้พูดคุยกับคนอื่น ๆ ไม่สนใจมุม OOP สักครู่กรณีการใช้งานเฉพาะที่ฉันมีในใจคือต่อไปนี้ (สมมติว่าผ่านโดยการอ้างอิงเพียงเพื่อให้ตัวทำความสะอาดรหัสเทียม) int x doSomething(x) doAnotherThing(x) doYetAnotherThing(x) doSomethingElse(x) ดังนั้นสิ่งที่ฉันหมายถึงคือมีตัวแปรบางอย่างที่เป็นเรื่องธรรมดาระหว่างฟังก์ชั่นหลายอย่าง - ในกรณีที่ฉันจำได้ว่ามันเป็นเพราะการผูกมัดของฟังก์ชั่นขนาดเล็ก ในระบบ OOP หากวิธีการเหล่านี้เป็นวิธีการเรียน (พูดเนื่องจากการปรับโครงสร้างด้วยวิธีการแยกจากวิธีการขนาดใหญ่) ตัวแปรนั้นสามารถส่งผ่านไปรอบ ๆ พวกเขาทั้งหมดหรืออาจเป็นสมาชิกชั้นเรียน

10
ความแตกต่างระหว่างตัวแปรและตำแหน่งหน่วยความจำคืออะไร? [ปิด]
เมื่อเร็ว ๆ นี้ฉันพยายามอธิบายพอยน์เตอร์ด้วยวิธีภาพเป็นแฟลชการ์ด คำถาม 001:นี่คือภาพวาดของตำแหน่งในหน่วยความจำคอมพิวเตอร์ มันเป็นความจริง0x23452หรือไม่ที่อยู่ของมันคือ ทำไม? คำตอบ:ใช่เพราะ0x23452อธิบายว่าคอมพิวเตอร์สามารถหาตำแหน่งนี้ได้จากที่ใด คำถาม 002:จริงหรือไม่ที่ตัวละครbนั้นถูกเก็บไว้ในตำแหน่งหน่วยความจำ0x23452? ทำไม? คำตอบ:ไม่เพราะตัวละครaจะถูกเก็บไว้ข้างใน คำถามที่ 003:มันคือความจริงที่เป็นตัวชี้ที่เก็บไว้ภายในที่ตั้งหน่วยความจำ0x23452? ทำไม? คำตอบ:ใช่เพราะที่อยู่ของตำแหน่งหน่วยความจำ0x34501ถูกเก็บไว้ข้างใน คำถามที่ 004:มันคือความจริงที่เป็นตัวชี้ที่เก็บไว้ภายในที่ตั้งหน่วยความจำ0x23452? ทำไม? คำตอบ:ใช่เพราะที่อยู่ของตำแหน่งหน่วยความจำอื่นจะถูกเก็บไว้ข้างใน ตอนนี้สำหรับส่วนที่ทำให้ฉันกังวล วิศวกรซอฟต์แวร์อธิบายพอยน์เตอร์ให้ฉันเช่นนี้: ตัวชี้เป็นตัวแปรที่มีค่าเป็นที่อยู่หน่วยความจำของตัวแปรอื่น จาก FlashCards ทั้งสี่ที่ฉันแสดงให้คุณเห็นทั้งหมดฉันจะกำหนดพอยน์เตอร์ด้วยวิธีที่แตกต่างกันเล็กน้อย: ตัวชี้คือตำแหน่งหน่วยความจำที่มีค่าเป็นที่อยู่หน่วยความจำของตำแหน่งหน่วยความจำอื่น มันปลอดภัยหรือไม่ที่จะบอกว่าตัวแปรนั้นเหมือนกับตำแหน่งหน่วยความจำหรือไม่? ถ้าไม่เช่นนั้นใครถูก ความแตกต่างระหว่างตัวแปรและตำแหน่งหน่วยความจำคืออะไร?

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.