JavaRush /Blog Java /Random-VI /Nghỉ giải lao #83. Những đặc điểm tính cách nào phân biệt...

Nghỉ giải lao #83. Những đặc điểm tính cách nào phân biệt các lập trình viên xuất sắc. Hướng dẫn lập trình đơn giản: Hàm và phương thức

Xuất bản trong nhóm

Những đặc điểm tính cách nào phân biệt các lập trình viên xuất sắc?

Nguồn: Hackernoon Điều gì phân biệt lập trình viên giỏi và lập trình viên giỏi? Tôi phát hiện ra hai đặc điểm tính cách mà các lập trình viên giỏi đều có: họ kiên định và bền bỉ. Bản thân những đặc điểm này không phải là dấu hiệu của thiên tài, và nếu muốn, bất kỳ ai cũng có thể phát triển những đặc điểm này và áp dụng chúng vào công việc của mình. Nghỉ giải lao #83.  Những đặc điểm tính cách nào phân biệt các lập trình viên xuất sắc.  Hướng dẫn lập trình đơn giản: Hàm và phương thức - 1

1. Hãy nhất quán

Những lập trình viên giỏi đôi khi không lập trình. Đúng hơn, họ có một lịch trình cụ thể để nâng cao kiến ​​thức và kỹ năng trong thời gian rảnh: trước hoặc sau giờ làm việc và vào cuối tuần. Ví dụ, một lập trình viên mà tôi biết dành hai giờ đầu tiên trong ngày—sáu ngày một tuần—cho các dự án hoặc nhiệm vụ học tập cá nhân. Điều này không có nghĩa là những người như vậy viết mã suốt ngày đêm. Họ, giống như tất cả chúng ta, có thời gian cho cuộc sống cá nhân, nghĩa vụ và sở thích của mình. Nhưng họ đều nhất quán: lập trình đã trở thành thói quen của họ. Làm thế nào bạn có thể trở nên nhất quán? Đây là điều mà nhiều người trong chúng ta đang cố gắng đạt được. Tôi nhận thấy rằng có một số cách để thực hiện việc này. Đầu tiên, hãy xác định số giờ mỗi tuần bạn có thể dành cho việc lập trình. Con số này là “số dặm chương trình” hàng tuần của bạn. Là một cựu vận động viên chạy cự ly, tôi chạy một số dặm nhất định mỗi tuần. Đây là hoạt động hàng tuần của tôi. Bây giờ tôi đã có kinh nghiệm lập trình: đây là số giờ tôi dành để lập trình mỗi tuần. Hầu hết mọi người đều bỏ qua giai đoạn này. Họ nhảy thẳng vào dự án họ muốn hoàn thành hoặc chủ đề họ muốn nghiên cứu mà không cần suy nghĩ xem họ sẽ tìm ra thời gian để thực hiện nó như thế nào. Kết quả là họ làm việc vào ban đêm hoặc 16 giờ một ngày. Có một vấn đề với cách tiếp cận này: nó không bền vững về lâu dài. Rèn luyện kỹ năng của bạn với tư cách là một lập trình viên không phải là việc bạn làm trong một hoặc hai tuần bận rộn. Thay vào đó, bạn phải liên tục làm việc đó trong một thời gian dài. Đây là lý do tại sao việc xác định kinh nghiệm lập trình của bạn lại rất quan trọng. Để làm điều này, hãy cân nhắc sử dụng nhật ký thời gian để xem bạn sử dụng thời gian ở đâu và như thế nào. Lấy một tờ giấy và viết ra mọi việc bạn làm hàng ngày và thời gian bạn làm việc đó, bao gồm cả việc kiểm tra mạng xã hội hoặc email trong năm phút. Điều này sẽ giúp bạn dễ dàng tìm thấy các vị trí còn trống trong lịch trình của mình. Bạn thậm chí có thể có thêm một chút thời gian để làm việc nhà hoặc xem TV. Sau đó, bạn có thể tạo một kế hoạch đào tạo lập trình mà bạn cần tuân thủ. Một kế hoạch đào tạo là một trong những cách hiệu quả nhất để có được sự nhất quán. Nó cho phép bạn phân phối trước tất cả các chi tiết. Tất cả những gì bạn phải làm là thực hiện kế hoạch này mỗi ngày. Kế hoạch luyện tập chạy của tôi vạch ra tôi cần chạy bao nhiêu dặm mỗi ngày và tốc độ chạy chúng. Bây giờ tôi lập kế hoạch tập luyện có cùng mục đích: chúng cho tôi biết tôi cần làm gì mỗi ngày. Vào cuối ngày, tôi mở Evernote trên máy tính và lên lịch cho ngày hôm sau. Đây là một ví dụ:
6:30 - 8:30 - Lập trình
  1. Đánh giá bộ bài flashcard Python Anki (20 phút).
  2. Giải quyết vấn đề Dữ liệu đám mây Word.
Tôi tuân theo quy trình này trong suốt ngày làm việc của mình: Tôi chỉ định lượng thời gian tôi sẽ dành cho một nhiệm vụ và những gì tôi muốn hoàn thành trong thời gian đó. Tôi cũng lập kế hoạch đào tạo hàng tháng. Trong đó, tôi bao gồm ba điều mà tôi muốn hoàn thành, học hỏi hoặc hoàn thành trong tháng tới. Tôi đã từng lập kế hoạch hàng quý. Nhưng sau đó tôi phát hiện ra rằng có quá nhiều thứ có thể thay đổi trong ba tháng. Kế hoạch hàng tháng cho phép bạn có đủ thời gian để thực hiện các bước quan trọng trong quá trình đào tạo của mình.

2. Hãy kiên trì

Đặc điểm thứ hai của lập trình viên giỏi là tính kiên trì. Họ làm việc thông qua tất cả các phương án để giải quyết vấn đề và tìm ra câu trả lời. Đây dường như là bí mật. Những lập trình viên giỏi mà tôi từng gặp có một khả năng kỳ lạ trong việc phân tích các vấn đề và đưa ra các giải pháp hoặc giải pháp khác nhau cho một tình huống khó khăn. Nói tóm lại, họ có một hệ thống để giải quyết vấn đề. Tôi chưa bao giờ có một hệ thống giải pháp ở trường trung học. Bất cứ khi nào tôi được giao một bài toán trong lớp toán, tôi sẽ lao thẳng vào nó với tốc độ tối đa. Sau đó tôi tiếp tục làm điều này khi bắt đầu lập trình. Không có kế hoạch. Không có hệ thống. Không có thời gian để suy nghĩ. Không có phân tích. Không có gì đáng ngạc nhiên, trong cả hai trường hợp, tôi đều quay bánh xe một cách không cần thiết và liên tục gặp chướng ngại vật. Bây giờ tôi có một hệ thống giải quyết vấn đề giúp tôi chia nhỏ vấn đề để tìm ra các phương án khác nhau. Ví dụ, bước đầu tiên trong quá trình giải quyết vấn đề của tôi là nêu vấn đề. Đây là lần đầu tiên. Khi tôi hiểu được vấn đề, tôi tập trung vào từng bước sau.
  • Phân tích dữ liệu đầu vào và kết quả mong đợi.
  • Xây dựng thuật toán hành động.
  • Viết mã giả.
  • Giải quyết một phiên bản đơn giản của vấn đề.
Hy vọng bạn có được ý tưởng. Các giai đoạn có thể không dễ dàng, nhưng chúng có thể quản lý được. Bằng cách giải quyết một vấn đề khó khăn, chúng ta trở thành những người tốt hơn. Nó cũng mang lại sự tự tin. Một khi chúng ta giải quyết được một vấn đề khó khăn, chúng ta sẵn sàng cho những vấn đề mới.

3. Thái độ với vấn đề?

Trên con đường trở thành lập trình viên giỏi hơn, có một điều khác chúng ta cần cân nhắc: thái độ. Bạn phải có một cách tiếp cận mới mẻ đối với các vấn đề và sự mơ hồ. Một ngày nọ, tôi hỏi một nhà phát triển cấp cao một số câu hỏi về một vấn đề mà tôi đang mắc kẹt. Tôi bối rối và thất vọng. Lúc đầu, nhà phát triển cũng bối rối. Tuy nhiên, câu trả lời của anh ấy khiến tôi choáng váng. “Chà, đó quả là một vấn đề thú vị,” anh nói. Sự quan tâm của anh ấy được khơi dậy bởi những chi tiết anh ấy khám phá được. Điều đó không có nghĩa là những lập trình viên giỏi cũng không gặp khó khăn trong một số vấn đề. Họ bị mắc kẹt. Nhưng sự khác biệt là ở thái độ. Bài học tôi học được ngày hôm đó là: những lập trình viên giỏi không ngại dấn thân vào những điều chưa biết. Họ hiểu rằng họ chắc chắn sẽ học được điều gì đó mới mẻ khi nghiên cứu vấn đề này. Chúng ta có thể học được rất nhiều điều bằng cách nghiên cứu các lập trình viên khác. Nhưng cuối cùng, trách nhiệm thuộc về chúng ta: chúng ta cần phải đi làm hàng ngày và hành động.

Hướng dẫn lập trình đơn giản: Hàm và phương thức

Nguồn: DZone Điều gì tạo nên một chức năng hoặc phương pháp tốt? Điều này đòi hỏi sự kết hợp của nhiều yếu tố, mỗi yếu tố đều quan trọng. Chúng ta hãy xem xét bốn trong số những điều quan trọng nhất. Nghỉ giải lao #83.  Những đặc điểm tính cách nào phân biệt các lập trình viên xuất sắc.  Hướng dẫn lập trình đơn giản: Hàm và phương thức - 2

Tên ý nghĩa

Các chức năng nên có tên mô tả mục đích hoặc chức năng của chúng. Khi một hàm có một cái tên có ý nghĩa thì rất dễ đọc và hiểu mục đích của nó. Ví dụ: nếu mục đích của hàm là tìm khách hàng theo ID thì một cái tên hay có thể là findCustomerById(id: String) . Một tùy chọn khác có thể là findCustomer(id: String) . Ở đây, chữ ký hàm ngụ ý rằng người mua được tìm thấy bằng ID của anh ta. Từ “tìm” cũng hàm ý rằng người mua có thể được tìm thấy hoặc không. Nếu tên hàm được thay đổi thành getCustomer(id: String) thì ý nghĩa của nó sẽ thay đổi vì bây giờ nó hàm ý không khôi phục; máy khách được tìm thấy hoặc chức năng bị lỗi và có thể đưa ra một ngoại lệ. Cả hai tên đều là tên hợp lệ cho một hàm nhưng có ý nghĩa khác nhau và do đó cách triển khai của chúng cũng phải khác nhau.

Càng ít tham số càng tốt

Tôi thích tuân theo quy tắc của ba. Điều này có nghĩa là hàm phải có ba tham số trở xuống. Khi một hàm yêu cầu nhiều hơn ba tham số, nó phải được viết lại và các tham số được đặt trong ngăn chứa dữ liệu, chẳng hạn như lớp của nó, lớp dữ liệu, đối tượng JavaScript, v.v. Đây là một cách dễ dàng để giảm số lượng tham số và sắp xếp dữ liệu trong một ứng dụng. Ví dụ: hãy lấy một hàm có hành vi giống hệt nhau nhưng có chữ ký khác nhau:
fun addCustomer(
  firstname: String,
  lastname: String,
  streetAddress: String,
  city: String,
  zipCode: String
)
Đây là một lựa chọn khác:
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)

Chức năng thực hiện những gì được mong đợi

Một chức năng phải làm những gì được mong đợi ở nó. Không nhiều không ít. Nếu hàm được đặt tên là findAddress(latitude, longitude) thì nó sẽ tìm địa chỉ tại tọa độ đã cho hoặc, nếu địa chỉ không thể chuyển đổi thành tọa độ, hãy trả về None , null , Empty hoặc bất cứ loại nào phù hợp với ngôn ngữ đã cho . Hàm này không được làm bất cứ điều gì khác, chẳng hạn như tra cứu các địa chỉ lân cận hoặc tạo bản ghi tọa độ. Một chức năng có thể có các tác dụng phụ như ghi nhật ký hoặc phân tích, nhưng những tác dụng phụ này không thể nhìn thấy được đối với đầu vào và đầu ra.

Chức năng có thể được kiểm tra

Các tính năng phải được thiết kế sao cho chúng có thể được kiểm tra. Trong ví dụ về mã trước đó, tôi đã xác định hàm addCustomer nhưng tôi không xác định bất kỳ kiểu trả về nào, vì vậy khả năng kiểm tra của nó là đáng nghi ngờ. Tất nhiên, nó có thể được kiểm tra bằng cách sử dụng mô phỏng hoặc gián điệp tùy thuộc vào việc triển khai nội bộ như thế nào, điều này có thể đạt được bằng cách chỉ cần cung cấp kiểu trả về:
fun addCustomer(customer: Customer): Customer
Với chữ ký hàm này, chúng ta có thể trả về thực thể khách hàng đã thêm cho thành phần được gọi. Chúng ta cũng có thể kiểm tra xem hàm có thực hiện những gì nó phải làm với đối tượng máy khách này hay không (nghĩa là gán cho nó một mã định danh duy nhất).
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION