Một nhà phát triển có nên bị buộc phải ghi nhớ chi tiết? [đóng cửa]


33

Nhiều lần tôi quên những điều về ứng dụng của tôi. Tôi không ghi nhớ tên bảng hoặc những gì một truy vấn đã làm và tôi tìm kiếm để có được những gì tôi muốn. Trưởng nhóm của tôi nói với tôi rằng tôi phải ghi nhớ tên bảng mà tôi sử dụng.

Là nhà phát triển cần phải ghi nhớ tên bảng trong cơ sở dữ liệu, tên lớp vv? Và nếu câu trả lời là "Có, mọi lúc", tôi nên làm gì để ghi nhớ những điều đó?


27
Tôi ước tôi có thể quên chúng.
JeffO

6
Nói với anh ta rằng anh ta nên viết bằng tay trái (điều này cực kỳ dễ đối với một số người và khá khó đối với những người khác).
Công việc

4
Cưỡng chế để ghi nhớ tên bảng tên ??? WTF!? Tất cả mọi người phải học mười nghìn tên cột vào cuối tuần! Sau đó sẽ có một bài kiểm tra; Bất cứ ai không nhận được 100% sẽ bị ép chân trước tiên với niềm tự hào riêng tư của tôi về sư tử dại !!! Bwahahahahaa !!!!! Ngay
Donal Fellows

4
Khi tôi còn là sinh viên hợp tác, tôi đã làm việc với một anh chàng yêu cầu chính xác điều đó từ tôi, nói với tôi rằng tôi "lãng phí thời gian" khi tôi nhìn lên mọi thứ, nói rằng "bạn nói rằng bạn đang học cái này!" khi tôi không thể đọc tên bảng (và nội dung của chúng) từ bộ nhớ và sử dụng sự thiếu cam kết của tôi để ghi nhớ tên bảng như một cái cớ để ngừng hoàn toàn cố vấn cho tôi. Tôi đã cứu anh ấy trong báo cáo hợp tác của tôi.
dùng16764

2
Đừng học thuộc, ghi nhớ.
tylermac

Câu trả lời:


63

Bạn không cần phải ghi nhớ rõ ràng những điều này. Điều đó có nghĩa là tôi ngồi xuống và học chúng như bạn sẽ liệt kê một danh sách các từ để kiểm tra chính tả. Trong trường hợp đầu tiên, các tên phải dễ nhớ và có thể khám phá để bạn có thể tìm lại chúng mà không cần quá nhiều nỗ lực.

Bạn cũng nên có quyền truy cập vào các công cụ giúp bạn hoàn thành tự động và tương tự.

Trong một hệ thống lớn gồm hơn 100 bảng, không có cách nào bạn thực sự có thể mong đợi để nhớ mọi tên bảng và mọi tên cột, tuy nhiên, với các tên dễ nhớ, có thể khám phá và sử dụng thường xuyên, bạn nên thấy mình nhớ các chi tiết quan trọng nhất và những thứ bạn sử dụng ngày.


6
Đã làm việc trong một ứng dụng với các bảng 4k, tôi có thể chứng thực tiện ích của lời khuyên này. Ghi nhớ không giúp ích gì, các quy ước dự án thực hiện (đặc biệt là khi chúng được thi hành; và nếu không, bạn phải dựa vào bộ nhớ của mình).
Vineet Reynold

1
Để giúp khám phá, hãy tạo các biểu đồ gian lận và / hoặc (mô hình) của những thứ bạn cần. Bằng cách đó, bạn sẽ chỉ cần nhìn vào giấy hoặc tài liệu / hình ảnh của bạn và có thể quét các tên bảng và cột bạn cần.
Kissaki

34

Einstein đã nói "không bao giờ ghi nhớ những gì bạn có thể tra cứu [trong sách]", và tôi hoàn toàn đồng ý.

Sử dụng bộ nhớ của bạn cho các công cụ trừu tượng (kỹ thuật và nguyên tắc phát triển) không phải là sự kiện mà bạn có thể tìm thấy khi bạn cần chúng.


vâng ... đừng ghi nhớ nó, nó sẽ đến khi bạn sử dụng thông tin. Mặc dù vậy, có tài liệu tham khảo cho tiện dụng này mọi lúc.
Newtopian

17

Xấu hổ khi thừa nhận - Tôi đã sử dụng C gần 30 năm nay, nhưng không bao giờ có thể nhớ cách khai báo các con trỏ hàm - Tôi luôn phải thoát K & R để kiểm tra cú pháp.

Thậm chí xấu hổ hơn, tôi phải suy nghĩ thực sự khó khăn về cách thức hoạt động của typedef - là:

 typedef foo int;

hoặc là

 typedef int foo;

Đây là những điểm mù cá nhân của tôi. Tôi sẽ không lo lắng nếu bạn có những cái tương tự.


2
+1: Tôi bắt đầu lập trình C vào năm 1985 và vẫn phải tìm cách khai báo các con trỏ hàm. Tôi đã đâm một nhát vào một ngày khác và nó đã hoạt động, và tôi khá hài lòng với bản thân mình. (Tôi nhớ cách làm typedefs ... :-)
Bob Murphy

2
Tôi rất vui vì trong ngôn ngữ tôi làm việc với (C #), tương đương với các con trỏ hàm thực sự có thể được phân tích cú pháp bởi con người, không chỉ trình biên dịch.
Svick

@svick Ồ, tôi không gặp vấn đề gì khi đọc các hàm con trỏ, nó nhớ cách viết chúng mà tôi gặp khó khăn.
Neil Butterworth

3
Tôi cố tình không ghi nhớ các bảng ưu tiên C hoặc C ++. Tôi đã có sẵn chúng để tham khảo ngay lập tức nếu tôi cần chúng và tôi thực sự không muốn viết mã sẽ gây nhầm lẫn cho người khác đã không ghi nhớ chúng.
David Thornley

Mã phụ thuộc vào quy tắc ưu tiên không rõ ràng là mã xấu.
Gort Robot

9

Máy tính là tốt để nhớ chính xác công cụ. Máy tính cũng rất tốt trong việc tìm kiếm những thứ họ đã nhớ trước đây.

Vì vậy, kỹ năng chính là sử dụng máy tính như một phần mở rộng cho bộ nhớ của bạn. Viết mã sạch, công cụ tài liệu, học cách sử dụng các công cụ tìm kiếm một cách hiệu quả, thiết lập môi trường phát triển của bạn để dễ dàng tìm thấy mọi thứ, v.v.

Một tác dụng phụ tuyệt vời là bạn cũng sẽ giúp người khác đọc mã của bạn dễ dàng hơn.


5

Bộ nhớ rất quan trọng

Một trí nhớ mạnh mẽ thực sự là một trong những tài năng hàng đầu mà một nhà phát triển có thể có; thực ra là ai cũng có thể có Đó thực sự là một điều đặc biệt và tôi ghen tị và ngưỡng mộ những người may mắn với nó. Nó chắc chắn có thể giúp một người trở thành một nhà phát triển, luật sư, thợ máy mạnh mẽ hơn hoặc (chèn công việc lựa chọn ở đây).

Cần bao nhiêu?

Nhưng tôi không tin rằng đó là một yêu cầu công bằng để yêu cầu ghi nhớ tất cả mọi thứ. Tôi tin rằng bạn sẽ bắt đầu cam kết mọi thứ vào bộ nhớ như một phần tự nhiên của việc làm. Đây là lý do tại sao đọc một cuốn sách về một ngôn ngữ và sử dụng nó trong môi trường sản xuất không giống nhau. Khi bạn làm việc hàng ngày với một cái gì đó (một số người sẽ gọi đây là "thực hành"), bạn sẽ bắt đầu biến một số thứ thành bản chất thứ hai.

Cũng như các áp phích khác, tôi tin rằng việc ghi nhớ các phần chính của ứng dụng sẽ giúp ích. Tuy nhiên, tôi không chắc chắn đầu tư vào việc ghi nhớ tất cả những thứ đó đáng để đầu tư khi bạn có thể tận dụng các tính năng như intellisense, ngày càng phổ biến trong các công cụ hiện đại.

Làm thế nào bạn có thể cải thiện?

Tôi không phải là một chuyên gia về trí nhớ, nhưng một số người tin rằng bạn thực sự có thể cải thiện trí nhớ thông qua các bài tập tinh thần như trò chơi trí tuệ (ô chữ, sudoku, câu đố, v.v.). Lý thuyết là bộ não của bạn giống như một cơ bắp và nếu bạn sử dụng nó theo những cách khác nhau và tập luyện nó thì bạn có thể củng cố nó.

Sẽ rất thú vị khi xem các nghiên cứu về cách mọi thứ như chơi trò chơi trí tuệ, lập trình và các hoạt động tương tác sẽ ảnh hưởng đến não theo thời gian. Những điều như vậy có thể giúp chống lại sự khởi đầu của mất trí nhớ do tuổi tác hoặc chứng mất trí nhớ?


5

Tôi đến từ đâu, có một câu nói cũ có nội dung như thế này bằng tiếng Anh: "Một kẻ ngốc ghi nhớ, một người đàn ông thông minh viết ra". Về cơ bản, không có vấn đề tốt như thế nào bộ nhớ của bạn, bạn sẽ quên . Bạn chỉ là con người. Và điều này, như một hệ quả, làm cho việc dựa vào trí nhớ của con người ... tốt, không đáng tin cậy. Ngay cả khi bạn nghĩ rằng bạn nhớ những tên bảng đó, bạn có thể chắc chắn 100% không? Bạn chỉ cần vài giây để tra cứu tên bảng, nhưng bạn có thể cần hàng giờ hoặc thậm chí vài ngày để theo dõi các lỗi gây ra do viết sai chính tả.

Kết luận là không, đó là một yêu cầu vô lý, đặc biệt là đối với các dự án lớn, có thể có hàng ngàn bảng và lớp.


3

Nếu đó là một thứ gì đó mà bạn đang làm việc và đó là một nhiệm vụ dài hạn, thì đúng vậy, bạn nên làm việc để học và có thể nhớ các tên bảng, lớp, biến và phương thức khác nhau. Đây là một cái gì đó sẽ đi qua thời gian khi bạn làm việc với họ. Bạn sẽ không học được tất cả chúng qua đêm, nhưng bạn nên cố gắng biết càng nhiều về hệ thống bạn đang làm việc càng tốt. Ngoài ra, trong một hệ thống lớn, không có cách nào bạn có thể ghi nhớ mọi thứ, nhưng không có lý do gì để không học và nhớ nhiều như bạn có thể.

Việc phải tìm kiếm mọi thứ mọi lúc chỉ là một yếu tố quyết định đến năng suất - nếu bạn đang thực hiện một nhiệm vụ và phải dừng lại và tìm kiếm mọi thứ cứ sau vài phút, đó là một sự mất tập trung. Sử dụng các công cụ thích hợp để hỗ trợ bạn và học / ghi nhớ những gì bạn có thể. Nó sẽ cải thiện đáng kể năng suất của bạn.


1
Tôi hoàn toàn không đồng ý với việc ghi nhớ chi tiết. Bạn nên nhớ các khái niệm và chức năng. Đó là, biết hệ thống của bạn có thể làm gì và biết cách tìm ra tên phương thức / biến / cột chính xác là gì.
edA-qa mort-ora-y

1
Tôi sẽ không mong đợi bạn biết tất cả mọi thứ, nhưng tôi hy vọng rằng bất kỳ ai làm việc trên một hệ thống con cụ thể sẽ biết hệ thống con đó từ trong ra ngoài. Tôi sẽ xem xét kiến ​​thức quan tâm đến công việc của bạn.
Thomas Owens

3

Có bất kỳ điểm để ghi nhớ tên lớp chính xác? Tôi không nghĩ vậy.

Có bất cứ điểm nào để biết loại thuật ngữ mà dự án của bạn sử dụng trong tên lớp, để bạn có thể tìm kiếm chúng nhanh hơn không? Chắc chắn rồi.


2

Tôi không đồng ý rằng bạn nên ghi nhớ tên bảng, nhưng chúng sẽ dễ đoán. Để dễ đoán, hãy kiên định. Theo cách này, bạn sẽ không tự hỏi mình "Hmm .. là bảng foo số nhiều hay số ít? Là ID khóa chính hoặc RID hoặc FooRID?"


2

Tôi không biết làm thế nào bạn có thể truy vấn cơ sở dữ liệu bất cứ lúc nào mà không cần biết tên bảng chính và tên cột quan trọng (nhưng chắc chắn không phải là tất cả). Tôi biết những người biết công cụ này mà không cần phải tìm ra nó mỗi lần trở nên có giá trị hơn đối với tổ chức và trở thành người "đi đến" khi những người khác bị mắc kẹt.

Tôi thấy rằng thường khi mọi người không bắt đầu tìm hiểu công cụ này, họ sẽ mắc lỗi trong các truy vấn mà không nhận ra. Lỗi tôi thường phát hiện ra ngay lập tức trong các đánh giá mã vì tôi hiểu cấu trúc cơ sở dữ liệu của chúng tôi và cách các bảng liên quan với nhau và các quy tắc kinh doanh quan trọng là gì mà không cần phải tìm kiếm chúng.

Cá nhân tôi thấy rằng những người không bận tâm tìm hiểu cấu trúc thường ở cấp độ mới bắt đầu trong việc truy vấn cơ sở dữ liệu cụ thể đó. Họ cũng có xu hướng không sống sót khi bị sa thải. Tôi nghĩ rằng ông chủ của bạn đang cố gắng làm cho bạn một việc để khiến bạn chú ý hơn.


1

Hơn cả bộ nhớ mạnh, thứ giúp ích rất nhiều là thiết kế hướng tên miền và tuân theo các quy ước dễ dàng như tên bảng và tên lớp giống nhau. Nếu chủ doanh nghiệp của bạn nói với bạn về yêu cầu, các thuật ngữ cụ thể về tên miền được anh ấy / cô ấy sử dụng sẽ có trong mã. Trong trường hợp này, chúng ta không phải nhớ ánh xạ giữa các điều khoản và tên doanh nghiệp trong mã. Thói quen này cần một chút thời gian để nắm bắt nhưng nó rất hữu ích vì nó cũng làm giảm lỗi dịch thuật giữa các chủ doanh nghiệp và nhà phát triển.

Cùng với điều này nếu thời gian của dự án rất dài, việc thoải mái với cơ sở mã trong một khoảng thời gian sẽ giúp tiềm thức bộ nhớ.


Xin lỗi, bạn có thể giải thích ý nghĩa của nó là domain driven designgì không?
Anyname Donotcare

1
@just_name Tôi bắt đầu với martinfowler.com/bliki/EvansClassification.html
Vinod R
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.