2009-04-13 36 views
11

Tôi biết rằng câu trả lời mặc định là "nó phụ thuộc", nhưng tôi muốn biết danh sách tính năng bạn đang làm trong việc phát triển một ứng dụng tốt.Tính năng nào có ứng dụng tốt nên quan tâm đến 'By-Design'

Tôi đặc biệt quan tâm đến các tính năng cần được quan tâm tại thời điểm thiết kế vì việc thêm chúng vào cuối sẽ khiến chúng tôi mất nhiều chi phí.

Vui lòng liệt kê một tính năng cho mỗi câu trả lời để chúng tôi có thể bỏ phiếu cho các tính năng quan trọng nhất.

Mọi thông tin bổ sung, như câu chuyện chiến tranh của riêng bạn, sẽ được đánh giá cao.

Tôi đặt câu hỏi này để nâng cao ứng dụng của tôi từ ngày 0 và tôi nghĩ rằng tôi không phải là người duy nhất có mục tiêu này, vì vậy hãy viết bất kỳ tính năng nào bạn nghĩ phải tồn tại trong một ứng dụng tốt.

Trả lời

15

Logging và xử lý lỗi

+0

? Tôi không thể nhớ lần cuối cùng tôi nhìn vào đăng nhập bất cứ điều gì, nhưng các ứng dụng máy chủ tôi đã viết mã cho. Đây thực sự là phản hồi của nhà phát triển. – cgp

+0

Điều quan trọng là mặc dù vậy. Bạn không thể duy trì và mở rộng ứng dụng của mình nếu bạn không có phản hồi lỗi tốt và liệu người dùng của bạn có hiểu hay không, họ cần bạn để có thể duy trì và mở rộng ứng dụng của bạn. – chaos

+0

Tôi đoán đó là để nói, các tính năng hỗ trợ phát triển quan trọng so với các tính năng trải nghiệm người dùng, về lâu dài. – chaos

6

Cá nhân các tính năng tốt mà tôi đã không cho nó ý nó nên là
Khả năng mở rộng


Nó giúp cộng đồng ứng dụng của tôi lớn lên - đó là cách tốt để tiếp thị một cách khôn ngoan & kỹ thuật khôn ngoan và nó giúp tôi tập trung vào hoạt động kinh doanh cốt lõi của mình và để các tính năng thú vị được xây dựng bởi người dùng

+1

Rõ ràng điều này rất quan trọng, nhưng nó vô cùng mơ hồ (không rõ là nó thực sự là một 'tính năng') và không thực sự nói cho ai biết họ nên làm gì để làm cho ứng dụng của họ có thể mở rộng được. Tôi đã cố gắng giải quyết vấn đề này bằng cách thêm các câu trả lời cụ thể giúp tăng khả năng mở rộng. – chaos

4

Tìm kiếm. Việc tìm kiếm hộp văn bản tìm kiếm dễ dàng và kết quả sẽ tốt nhất có thể.

3

Phím tắt (ctrl-f, vv ...)

0

mô đun - Năng suất - Khả năng mở rộng

Đó là những mục tiêu của thiết kế tổng thể của - giả - Smart Client Software Factory. Và nó hoạt động.

0

sụp đổ báo cáo, bởi vì nó sẽ sụp đổ, và đội ngũ phát triển cần phải biết khi nào nó, vì vậy bạn có thể ở lại trên đầu trang của các vấn đề ...

1

Performance (đọc mà như độ trễ nếu bạn muốn).

Mặc dù hàng nghìn người hét lên tối ưu hóa sớm trên bảng, nhưng đó là một yêu cầu chức năng đơn giản. Hãy khác biệt và thách thức với chất lượng tốt hơn (hoặc thiết kế cho hiệu suất, không phải bộ chọn tối ưu hóa sớm).

Không có dự án nào khác trên thế giới yêu cầu cải thiện trang bị nhiều hơn VM như giải pháp trong Java và CLR. Nó là một hiện vật rõ ràng của mỗi sản phẩm, công nghệ, ấn bản của họ và tất nhiên là được gọi là: .NET 3.5 và nói rằng Oracle 200MB client (lol).

Máy ảo chỉ hút trong mọi tính năng mới hoàn thiện, ấn bản và xây dựng ứng dụng trên đó và bạn thực sự cần một Cray.

Khả năng mở rộng là một câu chuyện hoàn toàn khác, nhưng con người, mọi người sẽ không sử dụng ứng dụng có độ trễ cao và hầu hết các ứng dụng CLR (ngoài nội dung web đơn giản và không thể áp dụng được 60% thời gian, như trang web này/ứng dụng) chỉ là vậy. Tải một cái gì đó nghiêm trọng họ lên và bạn sẽ được chạy đến văn phòng không được quản lý, không được quản lý IDE, cơ sở dữ liệu không được quản lý, trò chơi không được quản lý, trình duyệt nhân bản và cứ tiếp tục như vậy.

Ai đó nên Whack những người yêu GC với một con dơi và nói với họ để thức dậy ..

+0

.NET không sử dụng máy ảo. JIT biên dịch là rất khác nhau. – Ray

+1

.Net kindof sử dụng một VM, kiến ​​trúc IL nhắm vào một kiến ​​trúc máy tính ảo dựa trên stack, nhưng thực tế là IL (bytecode trung gian) được biên dịch thành mã gốc thay vì được hiểu đôi khi không có bất kỳ sanboxing nào. một máy ảo thực sự. –

+0

Tôi rất thích nhìn thấy một số loại thử nghiệm hiệu suất thế giới thực của .NET so với C++ (liên quan đến thời gian phát triển).Nhưng tôi nghi ngờ bất cứ ai sẽ viết một ứng dụng thích hợp trong cả hai ngôn ngữ chỉ để thấy sự khác biệt. – Ray

4

Thiết kế từ Stories tài, cố ý trì hoãn quyết định thiết kế cơ sở dữ liệu cho đến khi ít nhất là cắt giảm đầu tiên tại tầng cấp cao nhất là tạo. Viễn, quá thường xuyên, các thành phần của các thủ tục người dùng khác nhau bị bóp méo bởi các yêu cầu về tính toàn vẹn quan hệ và các thủ tục bảo trì bảng. Chúng ta thường thấy một đơn đặt hàng mới được nhập vào như thế nào và người dùng bắt buộc phải điều hướng một số biểu mẫu để điền chi tiết khách hàng (đôi khi yêu cầu cuộc gọi điện thoại và/hoặc dữ liệu giả mạo không xác định), các trường bắt buộc thực sự không phải là tín dụng thông tin thực sự xuất phát từ một bộ phận khác, các mục bị hủy do thông tin không đầy đủ đã phát hiện ra một số trang sâu, v.v.

Quá ít khi mọi người duy trì và xem lại các số liệu khả năng sử dụng như các trang được điều hướng, các lần nhập phím bị gián đoạn; mặc dù sứ mệnh của khách hàng và năng suất của người dùng phải là yếu tố quyết định chính của chất lượng phần mềm.

3

Giao diện phức tạp sắp xếp theo lớp, với những hành động phổ biến nhất và mong muốn cực kỳ đơn giản và rõ ràng để thực hiện, trong khi hành động ít phổ biến hơn và kém hấp dẫn đang đạt được thông qua sự phức tạp hơn.

8

Quốc tế hóa.
Thêm nó như một sau khi suy nghĩ có thể tốn kém

cạm bẫy tiềm năng:

  • không phải tiếng Anh hệ điều hành (đừng cho rằng "Program Files" tên thư mục ví dụ)
  • dữ liệu tham khảo (dịch hiển thị văn bản)
  • hình ảnh (văn bản trong hình ảnh sẽ cần phải được dịch)
  • bố trí giao diện người dùng (đệm cho văn bản dài hơn sau khi dịch)
  • mult trình cài đặt i-ngôn ngữ, EULA, v.v.
  • chuỗi được mã hóa cứng!
  • không quy định cụ thể và định dạng văn hóa cụ thể
  • tệ, nội địa hóa thời gian (ví dụ như sử dụng dấu phẩy vs kỳ tệ) cách tiếp cận
  • thiết kế: nguồn nhúng vs Satellite Assembly (tức là "gói ngôn ngữ")
  • thiết kế cơ sở dữ liệu: làm thế nào các giá trị lưu trữ/ngôn ngữ tra cứu cụ thể
4

Usability - Bất kể như thế nào có thể mở rộng và không bị lỗi ứng dụng của chúng tôi là, thành công của nó thường sẽ phụ thuộc vào có bao nhiêu người dùng cuối sẽ thích nó. Nó có thể được mã hóa như thùng rác bên dưới, nhưng nếu nó dễ sử dụng và rất trực quan để tìm hiểu, nó vẫn sẽ là một người chiến thắng.

Đừng bao giờ quên người dùng cuối, giao diện người dùng chương trình.Làm cho một mức độ cao của khả năng sử dụng một tính năng cho tất cả các ứng dụng của bạn.

Một người nào đó trong nhận xét đã hỏi cách triển khai tính khả dụng làm tính năng - không may là bạn có thể yêu cầu tính năng (ví dụ: "làm cho trang web này có thể sử dụng được") nhưng nó giống như một bộ hướng dẫn bạn nên làm theo khi thiết kế giao diện người dùng của bạn, giống như hướng dẫn bạn làm theo trong quá trình mã hóa giúp chương trình của bạn có thể mở rộng.

Bài đăng này hầu như không đủ dung lượng cho điều đó. Tôi khuyên bạn nên Don't Make Me Think by Steve Krug làm điểm khởi đầu cho bất kỳ ai quan tâm đến khả năng sử dụng.

+0

Của sự mơ hồ tương tự như 'khả năng mở rộng'. Chúng tôi nên thêm những tính năng cụ thể nào để ứng dụng của chúng tôi có thể sử dụng được? – chaos

+0

@chaos Tôi đồng ý với bạn, nhưng đồng thời nếu bạn bắt đầu nghĩ về khả năng sử dụng muộn, bạn sẽ kéo tóc ra :) Tôi đang nói về điều gì đó như "Quản trị viên nên truy cập các mục được chỉnh sửa gần đây nhất của mình" –

0

Kiểm tra hồi quy: khả năng dễ dàng, thường xuyên xác minh rằng các yếu tố chức năng chính tiếp tục hoạt động như mong đợi khi hệ thống được sửa đổi. (Đây là yếu tố cụ thể hơn của 'khả năng mở rộng'.)

1

Introspection: khả năng lập trình để xác định dự đoán về cấu trúc và hành vi của chính nó. (Tương tự với phản xạ ở cấp độ ngôn ngữ và một yếu tố quan trọng của khả năng mở rộng.)

9

Bảo mật. Khá thú vị, nếu không ngạc nhiên, rằng đây là câu trả lời thứ mười bốn để đi lên.

1

Đặt mặc định lấy nét đầu vào: Trong bất kỳ bản trình bày giao diện nào mà người dùng dự kiến ​​thực hiện bất kỳ thao tác nhập nào, thì tiêu điểm nhập phải mặc định vị trí họ có nhiều khả năng muốn bắt đầu nhập. (Đây là một tính năng cụ thể trong khu vực khả năng sử dụng.)

Trong trường hợp biểu mẫu web, rất tiếc cần lưu ý rằng việc đặt tiêu điểm cũng không được can thiệp vào người dùng nếu chúng đã bắt đầu nhập khi đặt tiêu điểm được chọn.

(Shameless plug: Tôi duy trì some generalized Javascript that addresses this for Web forms.)

2

đơn giản - Hãy làm những gì người sử dụng muốn và mong đợi trong khi vài cú nhấp chuột càng tốt.

Stackoverflow là một ví dụ tuyệt vời về điều này. Giao diện không được tải xuống bằng chrome. Đồ họa lớn nhất trên trang web là khoảng 3k.

3

Hoạt động không cần chuột: Ở bất kỳ mức độ nào khả thi, ứng dụng sẽ giúp người dùng tương tác với ứng dụng mà không cần sử dụng chuột. (Tệp dưới khả năng sử dụng, khả năng truy cập.)

Điều này không nhất thiết có nghĩa là sẽ có độ dài tuyệt vời để hỗ trợ việc sử dụng không chính xác; nhiều hơn là không ép buộc việc sử dụng chuột ở nơi không cần thiết. Ví dụ: không đánh bại hành vi gửi biểu mẫu mặc định khi nhấn enter trong biểu mẫu Web trừ khi bạn định làm điều gì đó hữu ích hơn với nó.

0

Nhận xét. Thực hiện một hệ thống bình luận tiêu chuẩn nội bộ (đầu tiên, tài liệu đó!) - một hệ thống tài liệu bình luận tự động có thể đúng, hoặc chỉ là một tập các bình luận tiêu đề chương trình tiêu chuẩn và các quy ước bình luận. Hãy để các lập trình viên biết trước cách bạn mong đợi mã được nhận xét. Có đánh giá mã lập trình chéo, kiểm tra khả năng đọc/dễ hiểu với một mắt để sửa đổi trong tương lai: nếu bạn là người tiếp theo để làm việc trên mã này, nó có hợp lý với bạn không?

9

Giao diện người dùng/thiết kế trải nghiệm Nhiều đổi mới công nghệ dựa trên thiết kế giao diện người dùng để nâng cao độ phức tạp kỹ thuật của chúng với sản phẩm có thể sử dụng. Công nghệ một mình [thường] không giành được sự chấp nhận của người dùng và khả năng tiếp thị tiếp theo.

Từ IBM:

Trong phát triển phần mềm, thiết kế là hiểu lầm rộng rãi và bị đánh giá thấp. Thường không có giao diện người dùng rõ ràng thiết kế được thực hiện riêng biệt với mã . Thiết kế lặp lại sau đó trở thành recoding. Đây là chiến lược ngắn ngủi vì nó dẫn đến kết quả là mã đáng kể hơn được viết trong thời gian dài. Vì thiết kế là không thể tránh khỏi, vấn đề thực sự là liệu nó có bị ẩn trong phần mềm đang được phát triển hay không rõ ràng và được chụp riêng. Cuộc tranh luận hữu ích là về cách thiết kế hoạt động tốt, và cách chụp nó ở dạng tối ưu để giao tiếp với những người thực hiện nó.

0

Báo cáo
vì nó luôn luôn đau khổ để chạy một báo cáo mà đọc dữ liệu từ hầu hết các bảng trong cơ sở dữ liệu
Có lần tôi thấy một bài thuyết trình (mà tôi không thể tìm thấy nó nữa) nói về cơ sở dữ liệu mẫu thiết kế cho kho dữ liệu, với amazon showcase
trên trong những giải pháp là để tạo ra một cơ sở dữ liệu denormalized đặc biệt mà báo cáo được công bố cho nó mỗi giai đoạn nhất định

0

Gắn thẻ

không chỉ trong ứng dụng của cộng đồng làm trung tâm mà còn cho line-of-kinh doanh các ứng dụng Bằng cách cho phép gắn thẻ, nhân viên có thể tạo thẻ mới với 'Xem này' mà ông có thể đính kèm cho hồ sơ học sinh, nhận biên lai và vv .. .

2

Undo

mỗi ứng dụng (trừ, giống như các trình biên dịch, không có giao diện người dùng tương tác) nên theo dõi mỗi sự kiện sử dụng (navigation, sửa đổi các văn bản & sở thích, vv) để người dùng có thể backtrack từ trạng thái hiện tại của mình.

Ngay cả các ứng dụng không có dữ liệu có thể thay đổi thường vẫn cho phép người dùng điều hướng. Trình duyệt "nút quay lại" là một ví dụ tuyệt vời về Tính năng hoàn tác.

1

Inbox
mặc dù nó có vẻ là rất nhỏ để đề cập đến, nhưng nó thực sự có ảnh hưởng lớn đến khả năng sử dụng các ứng dụng và hiệu suất quá Hãy tưởng tượng nếu người dùng có thể yêu cầu một báo cáo nặng có thể mất một phút để tạo,
thay vì nghe tiếng 'click và chờ đợi' ông có thể chọn 'gửi cho tôi báo cáo mới nhất khi nó đã sẵn sàng'

3

* gần đây nhất hành động/Hot Actions *

tôi thích tính năng này bao giờ nơi tôi thấy:

  • Wikipedia - Điều gì vừa mới thay đổi?
  • Stack Overflow - Đâu là những câu hỏi thực sự tích cực (trong đó là hành động!)
  • Blogs/Inbox - Hầu hết các loại blog của cách này vì một lý do

Ngay cả khi tôi đang trên một trang web như Reddit , nhiều người trong chúng ta tìm kiếm những thứ đang được nhận xét nhiều nhất, bởi vì đó là những điều thú vị.

Ví dụ: tôi muốn nó là mặc định cho câu trả lời, vì câu trả lời này sẽ bị bỏ qua! :)

2

Tự động hóa - nếu ứng dụng không yêu cầu giao diện người dùng để hoạt động, thì cho phép khả năng thực thi bằng dòng lệnh hoặc tập lệnh. Tìm thấy nhiều công cụ FTP tốt (công cụ lưu trữ quá) mà về cơ bản không cần một giao diện người dùng để làm công việc dự định, nhưng không phải là kịch bản có thể hoặc không có khả năng dòng lệnh.

4

Testability. Khi bạn có điều đó, mô đun, phân tách các mối quan tâm, tái sử dụng, xử lý lỗi thích hợp và nhiều thứ tốt khác sẽ miễn phí.

0

Hỗ trợ Unicode, vì mã hóa lớp trình bày của bạn không tốt bằng ISO-8859-1 và mã hóa lớp kiên trì là UTF-8.

Các vấn đề liên quan