JavaRush /จาวาบล็อก /Random-TH /คอฟฟี่เบรค #83 คุณลักษณะของตัวละครใดที่ทำให้โปรแกรมเมอร์ม...

คอฟฟี่เบรค #83 คุณลักษณะของตัวละครใดที่ทำให้โปรแกรมเมอร์มีความโดดเด่น คู่มือการเขียนโปรแกรมอย่างง่าย: ฟังก์ชันและวิธีการ

เผยแพร่ในกลุ่ม

ลักษณะนิสัยอะไรที่ทำให้โปรแกรมเมอร์โดดเด่นโดดเด่น?

ที่มา: Hackernoon อะไรแยกโปรแกรมเมอร์ที่ยอดเยี่ยมออกจากคนดี? ฉันค้นพบคุณลักษณะสองประการที่โปรแกรมเมอร์ผู้ยิ่งใหญ่มีเหมือนกัน คือ มีความสม่ำเสมอและต่อเนื่อง คุณลักษณะเหล่านี้ในตัวเองไม่ใช่สัญญาณของอัจฉริยะ และหากต้องการ ใครๆ ก็สามารถพัฒนาคุณลักษณะเหล่านี้แล้วนำไปใช้ในการทำงานได้ คอฟฟี่เบรค #83  คุณลักษณะของตัวละครใดที่ทำให้โปรแกรมเมอร์มีความโดดเด่น  คู่มือการเขียนโปรแกรมอย่างง่าย: ฟังก์ชั่นและวิธีการ - 1

1. มีความสม่ำเสมอ

โปรแกรมเมอร์ที่ดีไม่ได้เขียนโปรแกรมเป็นครั้งคราว แต่พวกเขามีตารางเวลาเฉพาะเพื่อพัฒนาความรู้และทักษะในช่วงเวลาว่าง ทั้งก่อนหรือหลังเลิกงานและวันหยุดสุดสัปดาห์ ตัวอย่างเช่น โปรแกรมเมอร์ที่ฉันรู้จักใช้เวลาสองชั่วโมงแรกของวัน — หกวันต่อสัปดาห์ — ในโครงการศึกษาส่วนตัวหรืองานต่างๆ นี่ไม่ได้เป็นการบอกว่าคนประเภทนี้เขียนโค้ดตลอดเวลา เช่นเดียวกับเราทุกคน พวกเขามีเวลาสำหรับชีวิตส่วนตัว ภาระผูกพัน และความสนใจ แต่มันก็สอดคล้องกัน: การเขียนโปรแกรมกลายเป็นนิสัยไปแล้ว คุณจะสม่ำเสมอได้อย่างไร? นี่คือสิ่งที่พวกเราหลายคนพยายามทำให้สำเร็จ ฉันพบว่ามีหลายวิธีในการทำเช่นนี้ ขั้นแรก ให้กำหนดจำนวนชั่วโมงต่อสัปดาห์ที่คุณสามารถเขียนโปรแกรมได้ หมายเลขนี้คือ "ไมล์สะสมของโปรแกรม" รายสัปดาห์ของคุณ ในฐานะอดีตนักวิ่งระยะไกล ฉันวิ่งเป็นจำนวนไมล์ในแต่ละสัปดาห์ นี่คือการวิ่งประจำสัปดาห์ของฉัน ตอนนี้ฉันมีประสบการณ์การเขียนโปรแกรมแล้ว นี่คือจำนวนชั่วโมงที่ฉันใช้เขียนโปรแกรมในแต่ละสัปดาห์ คนส่วนใหญ่ละเลยขั้นตอนนี้ พวกเขาตรงไปที่โครงการที่ต้องการทำให้เสร็จหรือหัวข้อที่ต้องการศึกษา โดยไม่คิดว่าจะหาเวลาทำได้อย่างไร ส่งผลให้พวกเขาทำงานตอนกลางคืนหรือ 16 ชั่วโมงต่อวัน แนวทางนี้มีปัญหา: มันไม่ยั่งยืนในระยะยาว การฝึกฝนทักษะของคุณในฐานะโปรแกรมเมอร์ไม่ใช่สิ่งที่คุณทำในช่วงสัปดาห์หรือสองสัปดาห์ที่ยุ่งวุ่นวาย แต่คุณต้องทำงานอย่างต่อเนื่องเป็นเวลานาน ด้วยเหตุนี้การระบุประสบการณ์การเขียนโปรแกรมของคุณจึงเป็นเรื่องสำคัญมาก ในการทำเช่นนี้ ให้ลองใช้บันทึกเวลาเพื่อดูว่าคุณใช้เวลาไปที่ไหนและอย่างไร หยิบกระดาษแผ่นหนึ่งแล้วจดทุกสิ่งที่คุณทำทุกวันและระยะเวลาที่ทำ รวมทั้งตรวจสอบโซเชียลมีเดียหรืออีเมลเป็นเวลาห้านาที วิธีนี้จะช่วยให้คุณค้นหาช่องว่างในกำหนดการของคุณได้ง่ายขึ้น คุณอาจจะมีเวลาเพิ่มเติมเล็กน้อยในการทำงานบ้านหรือดูทีวี จากนั้นคุณสามารถสร้างแผนการฝึกอบรมการเขียนโปรแกรมที่คุณต้องปฏิบัติตามได้ แผนการฝึกอบรมเป็นวิธีที่มีประสิทธิภาพมากที่สุดวิธีหนึ่งในการรักษาความสม่ำเสมอ ช่วยให้คุณกระจายรายละเอียดทั้งหมดล่วงหน้า สิ่งที่คุณต้องทำคือนำแผนนี้ไปใช้จริงทุกวัน แผนการฝึกวิ่งของฉันสรุปว่าฉันต้องวิ่งกี่ไมล์ในแต่ละวันและเร็วแค่ไหนในการวิ่ง ตอนนี้ฉันสร้างแผนการออกกำลังกายแบบตั้งโปรแกรมที่มีจุดประสงค์เดียวกัน โดยจะบอกฉันว่าฉันต้องทำอะไรในแต่ละวัน เมื่อสิ้นสุดวัน ฉันเปิด Evernote บนคอมพิวเตอร์และจัดตารางเวลาสำหรับวันถัดไป นี่คือตัวอย่าง:
6:30 น. - 8:30 น. - การเขียนโปรแกรม
  1. บทวิจารณ์สำรับแฟลชการ์ด Python Anki (20 นาที)
  2. การแก้ปัญหาข้อมูล Word Cloud
ฉันปฏิบัติตามกระบวนการนี้ตลอดทั้งวันทำงาน: ฉันกำหนดระยะเวลาที่ฉันจะใช้กับงานและสิ่งที่ฉันอยากจะทำให้สำเร็จในเวลานั้น ฉันยังสร้างแผนการฝึกอบรมรายเดือนด้วย ในนั้น ฉันรวมสามสิ่งที่ฉันอยากทำ เรียนรู้ หรือทำให้สำเร็จในเดือนหน้า ฉันเคยจัดทำแผนรายไตรมาส แต่แล้วฉันก็ค้นพบว่าสิ่งที่มากเกินไปสามารถเปลี่ยนแปลงได้ภายในสามเดือน แผนรายเดือนจะช่วยให้มีเวลาเพียงพอในการดำเนินการตามขั้นตอนสำคัญในการฝึกอบรม

2. มีความมุ่งมั่น

คุณลักษณะที่สองของโปรแกรมเมอร์ที่ดีคือความพากเพียร พวกเขาทำงานผ่านตัวเลือกทั้งหมดสำหรับการแก้ปัญหาและค้นหาคำตอบ นี่ดูเหมือนจะเป็นความลับ โปรแกรมเมอร์ผู้ยิ่งใหญ่ที่ฉันพบมีความสามารถที่แปลกประหลาดในการแยกแยะปัญหาและคิดวิธีแก้ปัญหาที่แตกต่างกันสำหรับสถานการณ์ที่ยากลำบาก สรุปก็คือมีระบบในการแก้ปัญหา ฉันไม่เคยมีระบบการแก้ปัญหาในโรงเรียนมัธยม เมื่อไรก็ตามที่ฉันเจอปัญหาในชั้นเรียนคณิตศาสตร์ ฉันจะพุ่งตรงไปที่ปัญหานั้นเต็มสปีด จากนั้นฉันก็ทำสิ่งนี้ต่อไปเมื่อเริ่มเขียนโปรแกรม ไม่มีแผน. ไม่มีระบบ. ไม่มีเวลาคิด ไม่มีการวิเคราะห์ ไม่น่าแปลกใจเลยที่ทั้งสองกรณีฉันหมุนล้อโดยไม่จำเป็นและวิ่งชนสิ่งกีดขวางอยู่ตลอดเวลา ตอนนี้ฉันมีระบบการแก้ปัญหาที่ช่วยให้ฉันแยกแยะปัญหาเพื่อค้นหาตัวเลือกต่างๆ ตัวอย่างเช่น ขั้นตอนแรกในกระบวนการแก้ไขปัญหาของฉันคือการระบุปัญหา นี่เป็นครั้งแรก เมื่อฉันเข้าใจปัญหาแล้ว ฉันจะมุ่งเน้นไปที่แต่ละขั้นตอนต่อไปนี้
  • การวิเคราะห์ข้อมูลอินพุตและผลลัพธ์ที่คาดหวัง
  • การสร้างอัลกอริธึมการดำเนินการ
  • การเขียนรหัสเทียม
  • การแก้ปัญหาเวอร์ชันที่เรียบง่าย
หวังว่าคุณจะได้รับความคิด ขั้นตอนอาจไม่ง่ายแต่สามารถจัดการได้ ด้วยการแก้ปัญหายากๆ เราจะเป็นคนที่ดีขึ้น ยังสร้างความมั่นใจอีกด้วย เมื่อเราแก้ปัญหายากๆ หนึ่งได้ เราก็พร้อมสำหรับปัญหาใหม่

3. ทัศนคติต่อปัญหา?

บนเส้นทางสู่การเป็นโปรแกรมเมอร์ที่ดีขึ้น ยังมีอีกสิ่งหนึ่งที่เราต้องพิจารณา นั่นก็คือ ทัศนคติ คุณต้องมีแนวทางใหม่ในการแก้ไขปัญหาและความคลุมเครือ วันหนึ่งฉันถามคำถามกับนักพัฒนาอาวุโสเกี่ยวกับปัญหาที่ฉันติดอยู่ ฉันสับสนและผิดหวัง ตอนแรกผู้พัฒนาก็งงเหมือนกัน อย่างไรก็ตาม คำตอบของเขาทำให้ฉันตกใจ “ว้าว นั่นเป็นปัญหาที่ยอดเยี่ยม” เขากล่าว ความสนใจของเขาป่องๆ ด้วยรายละเอียดที่เขาค้นพบ ไม่ได้หมายความว่าโปรแกรมเมอร์ที่ยอดเยี่ยมจะไม่มีปัญหาเช่นกัน พวกเขาติดขัด แต่ความแตกต่างอยู่ที่ทัศนคติ บทเรียนที่ฉันเรียนรู้ในวันนั้นคือ: โปรแกรมเมอร์ที่ดีไม่กลัวที่จะเสี่ยงกับสิ่งที่ไม่รู้จัก พวกเขาเข้าใจว่าพวกเขาจะเรียนรู้สิ่งใหม่อย่างแน่นอนจากการศึกษาปัญหานี้ เราสามารถเรียนรู้ได้มากมายจากการศึกษาโปรแกรมเมอร์คนอื่นๆ แต่ท้ายที่สุดแล้วความรับผิดชอบก็อยู่กับเรา: เราต้องทำงานทุกวันและดำเนินการ

คู่มือการเขียนโปรแกรมอย่างง่าย: ฟังก์ชันและวิธีการ

ที่มา: DZone อะไรทำให้ฟังก์ชั่นหรือวิธีการที่ดี? ซึ่งต้องใช้ปัจจัยหลายอย่างรวมกัน ซึ่งแต่ละปัจจัยมีความสำคัญ ลองดูสี่สิ่งที่สำคัญที่สุด คอฟฟี่เบรค #83  คุณลักษณะของตัวละครใดที่ทำให้โปรแกรมเมอร์มีความโดดเด่น  คู่มือการเขียนโปรแกรมอย่างง่าย: ฟังก์ชั่นและวิธีการ - 2

ชื่อที่มีความหมาย

ฟังก์ชันควรมีชื่อที่อธิบายวัตถุประสงค์หรือฟังก์ชันการทำงาน เมื่อฟังก์ชันมีชื่อที่มีความหมาย ก็จะง่ายต่อการอ่านและเข้าใจวัตถุประสงค์ของฟังก์ชัน ตัวอย่างเช่น หากจุดประสงค์ของฟังก์ชันนี้คือการค้นหาลูกค้าด้วย ID ชื่อที่ดีอาจเป็นfindCustomerById(id: String ) ตัวเลือกอื่นอาจเป็นfindCustomer(id: String ) ที่นี่ลายเซ็นของฟังก์ชันบอกเป็นนัยว่าพบผู้ซื้อด้วย ID ของเขา คำว่า "ค้นหา" ยังหมายถึงว่าผู้ซื้ออาจพบหรือไม่พบก็ได้ หากเปลี่ยนชื่อฟังก์ชันเป็นgetCustomer(id: String)ความหมายของมันจะเปลี่ยนไปเนื่องจากตอนนี้ไม่มีการย้อนกลับ พบไคลเอ็นต์หรือฟังก์ชันล้มเหลวและอาจส่งข้อยกเว้น ชื่อทั้งสองเป็นชื่อที่ถูกต้องสำหรับฟังก์ชัน แต่มีความหมายต่างกัน ดังนั้นการใช้งานจึงต้องแตกต่างกันด้วย

พารามิเตอร์น้อยที่สุด

ฉันชอบที่จะปฏิบัติตามกฎสามข้อ ซึ่งหมายความว่าฟังก์ชันจะต้องมีพารามิเตอร์สามตัวหรือน้อยกว่า เมื่อฟังก์ชันต้องการพารามิเตอร์มากกว่า 3 ตัว ควรเขียนใหม่และวางพารามิเตอร์ไว้ในที่เก็บข้อมูล เช่น คลาส คลาสข้อมูล วัตถุ JavaScript เป็นต้น นี่เป็นวิธีง่ายๆ ในการลดจำนวนพารามิเตอร์และจัดระเบียบข้อมูลภายในแอปพลิเคชัน ยกตัวอย่างฟังก์ชันที่มีพฤติกรรมเหมือนกัน แต่มีลายเซ็นต่างกัน:
fun addCustomer(
  firstname: String,
  lastname: String,
  streetAddress: String,
  city: String,
  zipCode: String
)
นี่เป็นอีกทางเลือกหนึ่ง:
data class Address(
  val street: String,
  val city: String,
  val zipCode: String,
  val streetNumber: String
)

data class Customer(
  val firstname: String,
  val lastname: String,
  val address: Address
)

fun addCustomer(customer: Customer)

ฟังก์ชันทำสิ่งที่คาดหวัง

ฟังก์ชั่นต้องทำสิ่งที่คาดหวังจากมัน ไม่มากไม่น้อย. หากฟังก์ชันชื่อfindAddress(ละติจูด, ลองจิจูด)ควรค้นหาที่อยู่ในพิกัดที่กำหนด หรือหากไม่สามารถแปลงที่อยู่เป็นพิกัด ให้ส่งคืนNone , null , Emptyหรืออะไรก็ตามที่เป็นประเภทที่เหมาะสมสำหรับภาษาที่กำหนด ฟังก์ชันนี้ไม่ควรดำเนินการอย่างอื่น เช่น ค้นหาที่อยู่ใกล้เคียงหรือสร้างบันทึกพิกัด ฟังก์ชันอาจมีผลข้างเคียง เช่น การบันทึกหรือการวิเคราะห์ แต่สิ่งเหล่านี้จะมองไม่เห็นสำหรับอินพุตและเอาต์พุต

สามารถทดสอบฟังก์ชันได้

คุณสมบัติต้องได้รับการออกแบบเพื่อให้สามารถทดสอบได้ ในตัวอย่างโค้ดก่อนหน้านี้ ฉันกำหนด ฟังก์ชัน addCustomerแล้ว แต่ฉันไม่ได้กำหนดประเภทการคืนสินค้าใดๆ เลย ความสามารถในการทดสอบจึงเป็นที่น่าสงสัย แน่นอนว่าสามารถทดสอบได้โดยใช้โปรแกรมจำลองหรือสายลับ ขึ้นอยู่กับว่าการใช้งานภายในเป็นอย่างไร ซึ่งสามารถทำได้โดยเพียงแค่ระบุประเภทการส่งคืน:
fun addCustomer(customer: Customer): Customer
ด้วยลายเซ็นฟังก์ชันนี้ เราสามารถส่งคืนเอนทิตีไคลเอนต์ที่เพิ่มไปยังส่วนประกอบที่เรียกว่าได้ นอกจากนี้เรายังสามารถตรวจสอบได้ว่าฟังก์ชันทำสิ่งที่ควรทำกับออบเจ็กต์ไคลเอนต์นี้หรือไม่ (นั่นคือ กำหนดตัวระบุเฉพาะให้กับมัน)
ความคิดเห็น
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION