ShellIconOverlayIdentifier - tại sao quá ít?


84

Tại thời điểm này, mọi người đều biết rằng có giới hạn đối với số lượng ShellIconOverlayIdentifiers(từ MSDN):

Số lượng trình xử lý lớp phủ biểu tượng khác nhau mà hệ thống có thể hỗ trợ bị giới hạn bởi dung lượng có sẵn cho lớp phủ biểu tượng trong danh sách hình ảnh hệ thống. Hiện tại có mười lăm vị trí được phân bổ cho lớp phủ biểu tượng, một số trong số đó được hệ thống đặt trước. Vì lý do này, chỉ nên triển khai trình xử lý lớp phủ biểu tượng nếu không có lựa chọn thay thế thỏa đáng

Tôi có thể hiểu giới hạn 15 lớp phủ trong Windows 95. Nhưng trong một môi trường có hàng Gigs RAM, nhiều Core và GPU, có lý do kỹ thuật nào cho con số thấp như vậy trong một hệ điều hành hiện đại không?

Và tại sao giá trị này không thể định cấu hình?

Trước khi đưa ra câu trả lời về 'hiệu suất', hãy cân nhắc: Windows cho phép cấu hình để bạn có thể giết chết hiệu suất ... tại sao lại chọn vấn đề này một cách cụ thể?


Tại sao điều này được gắn thẻ "rùa bò"? Tui bỏ lỡ điều gì vậy?
Cody Grey

19
Tôi nghĩ rằng tôi đã thông minh vì rùa bò là Ứng dụng được nhắc đến nhiều nhất khi xử lý các hạn chế quá mức của biểu tượng - chủ yếu là vì nó chiếm 9 vị trí khả dụng của bạn. Đã xóa thẻ.
rbellamy 10/12/10

1
Những hạn chế vẫn giống nhau trên windows 10. Cũng không biết tại sao.
Gohan

Câu trả lời:


86

Trừ khi ai đó ở đây tình cờ làm việc trong nhóm Windows Shell, tôi nghi ngờ rằng bạn sẽ nhận được câu trả lời thực sự giải quyết các hạn chế kỹ thuật và cách chúng ảnh hưởng đến lựa chọn thiết kế. Nhưng tôi sẽ cố gắng...

Tôi đoán là không có bất kỳ giới hạn kỹ thuật nào, hoặc ít nhất là không có giới hạn nào bây giờ. Lý do thực sự có lẽ là không ai đã từng dành thời gian để ngồi xuống và cập nhật mã, thiết kế và thông số kỹ thuật để giải quyết hạn chế này. Các tính năng không được triển khai theo mặc định và chỉ vì môi trường máy tính đã thay đổi trong vài năm qua không có nghĩa là ai đó đã ngồi xuống và viết lại Windows để tận dụng tất cả những thay đổi đó.

Bạn cũng nên coi đó là một lựa chọn thiết kế có ý thức hơn là một giới hạn áp đặt. Raymond Chen (người thực sự làm việc trong nhóm shell) đã xuất bản một mục blog phản hồi về sự náo động về việc Windows 7 loại bỏ lớp phủ "bàn tay chia sẻ". Anh ấy đưa ra một lập luận thuyết phục rằng lớp phủ biểu tượng thực sự không phải là cách hiển thị thông tin mong muốn (trên và ngoài thực tế là hệ thống được giới hạn ở 15) [nhấn mạnh thêm]:

Nói chung, các lớp phủ không phải là cách tốt để trình bày thông tin vì chỉ có thể có một lớp phủ cho mỗi biểu tượng và có giới hạn 15 lớp phủ cho mỗi ImageList. Nếu có hai hoặc nhiều lớp phủ áp dụng cho một mục, thì một lớp sẽ thắng và các lớp khác sẽ thua, tại thời điểm đó, giá trị của lớp phủ như một cách xác định những thuộc tính áp dụng cho một mặt hàng giảm dần vì cách duy nhất để chắc chắn rằng một thuộc tính bị thiếu là khi bạn không thấy lớp phủ nào cả. (Nếu bạn thấy một số lớp phủ khác, bạn không thể biết liệu đó là do thuộc tính của bạn bị thiếu hay do lớp phủ khác đang hiển thị thay vì của bạn.)

Có vẻ hợp lý với tôi rằng sự lộn xộn thêm vào vỏ đơn giản là không đáng giá trong phần lớn các trường hợp trong thế giới thực. Nhóm Windows Shell rõ ràng đã đạt được kết luận tương tự và cắt bỏ lớp phủ "bàn tay chia sẻ". Lời giải thích trực tiếp của Raymond:

Với những thay đổi trong cách mọi người sử dụng máy tính, việc chia sẻ thông tin ngày càng trở thành trạng thái mặc định. Khi bạn thiết lập HomeGroup, hầu hết mọi thứ sẽ được chia sẻ. Để loại bỏ sự lộn xộn trực quan, thông tin đã được chuyển đến ngăn Chi tiết.

Và, tôi biết bạn đặc biệt yêu cầu không đề cập đến hiệu suất, nhưng Windows thực sự cố gắng ngăn bạn không tự bắn vào chân mình. Người dùng yêu cầu khả năng phản hồi trong shell và các biểu tượng lớp phủ có thể can thiệp vào điều này. Như bằng chứng thêm rằng họ không phải là ưu tiên , một bài đăng trên blog khác của cùng Raymond Chen đã trừng phạt:

Một ví dụ khác về các ứng dụng có quan điểm ích kỷ về hiệu suất đến từ một công ty đang phát triển trình xử lý lớp phủ biểu tượng. Shell coi tính toán lớp phủ là một mục có mức độ ưu tiên thấp, vì điều quan trọng hơn là lấy các biểu tượng trên màn hình để người dùng có thể bắt đầu làm bất cứ điều gì họ muốn. Các đồ trang trí có thể đến sau. Công ty này muốn biết liệu có cách nào để họ có thể cải thiện hiệu suất và đưa lớp phủ lên màn hình ngay cả trước khi biểu tượng xuất hiện hay không, thể hiện một cách giải thích "hiệu suất" vô cùng ích kỷ.


15
Phản hồi xuất sắc. Vì vậy, có lẽ câu hỏi tốt hơn là "Đâu là giải pháp thay thế cho lớp phủ biểu tượng trình bày cùng một hàng đợi trực quan tức thì về trạng thái của tệp / thư mục?" Đối với tôi, dường như việc sử dụng các biểu tượng để làm nhiều việc hơn là xác định loại nội dung đang ngày càng trở nên quan trọng hơn vì lý do chính xác mà Raymond Chen đề cập - với việc làm mờ ranh giới vị trí tệp, tình trạng MATTERS.
rbellamy 10/12/10

3
Tôi rất nghi ngờ rằng đó không phải là một lựa chọn thiết kế có ý thức cũng không phải là một giới hạn áp đặt, mà là một quyết định thiết kế nghiêm trọng được đưa ra từ rất lâu trước đây (khoảng Win 95) và không bao giờ được sửa do cơ sở người dùng đã cài đặt. Quyết định ngớ ngẩn nhất là mỗi phần mở rộng lớp phủ chỉ có thể hỗ trợ một lớp phủ biểu tượng và đối với mỗi tệp, trình bao chỉ hỏi "áp dụng?". Đáng lẽ ra, mỗi lớp phủ hỗ trợ một loạt các biểu tượng và đối với mỗi tệp, trình bao sẽ hỏi "lớp phủ biểu tượng nào?", Mà phần mở rộng có thể trả lời "Tôi không áp dụng" là một tùy chọn.
Keith Robertson

9
Điều thú vị là MS đã chấp nhận điều này bằng cách trộn lẫn ShellIconOverlayIdentifiersmục đăng ký của tôi với OneDrive crud kể từ Win10. Đối với một nhà phát triển sử dụng thứ gì đó như TortoiseSVN / GIT, những lớp phủ này rất quan trọng và thực tế là chỉ một lớp có thể được hiển thị là lý do TẠI SAO .
Alex McMillan

2
Trong tất cả những thứ mà Windows 10 đã phá vỡ, @Alex, đó là thứ nằm khá xa trong danh sách của tôi. Quyết định hỗ trợ OneDrive cho người dùng rõ ràng là một quyết định của bộ phận tiếp thị chứ không phải nhóm trình bao. Không ai tiêu tốn thời gian và tiền bạc để quay lại và cải thiện trình tưởng tượng vỏ để làm cho nó thân thiện với người dùng.
Cody Grey

6
Đây không phải là một câu trả lời có thể chấp nhận được. Tôi biết rằng một phần của nó đã hình thành từ chính Microsoft, vì vậy, điều không được chấp nhận là đối với cách tiếp cận của Microsoft. Xem ví dụ của tôi: Tôi đã đồng bộ hóa các thư mục DropBox, Google Drive, Mega, OneDrive và Tortoise SVN và tôi thực sự muốn xem tất cả các lớp phủ một cách chính xác trên tất cả các thư mục, nhưng tôi không thể vì giới hạn ngu ngốc này.
Carlos B. Feitoza Filho

13

Câu trả lời xuất sắc về các vấn đề thực tế của Cody. Đối với lý do tại sao 15 chứ không phải một số khác, giới hạn được đưa vào chính điều khiển ImageList .


4

Điều này là rất tốt và tốt, theo giải thích của Cody Grey, nhưng nói thẳng ra là nó khá khó tưởng tượng, và như được báo cáo đằng sau hậu trường, nghe có vẻ hơi bực bội.

Vào năm 2015 và với Windows 10, chắc chắn có thể và cần phải có một khả năng tốt hơn, như tôi đã lưu ý rằng có khoảng 30 lớp phủ hiện diện và phải ưu tiên những lớp tôi muốn xem nhất, đó không phải là điều bạn muốn hầu hết mọi người lo lắng. Ngoài ra, tôi thấy các nhà cung cấp tích cực như Box đang cạnh tranh quá mức để cố gắng ưu tiên bản thân họ, và điều đó sẽ không bao giờ tốt.

Đây là một khả năng: Điều gì sẽ xảy ra nếu nhiều biểu tượng được phủ lên có một chỉ báo lớp phủ chung; ma trận hình chữ nhật nhỏ có nhiều màu như nút Ứng dụng Google Chrome? Singly Overlay sẽ chỉ hiển thị lớp phủ trong một danh sách dài.

Sau đó, khi con trỏ chuột gặp biểu tượng, một cửa sổ nhỏ sẽ thu thập tất cả các biến thể biểu tượng để xem (ở kích thước biểu tượng nhỏ hoặc lớn hơn một chút). Mỗi biểu tượng được phủ lên lần lượt thông báo bằng chú giải công cụ đó là gì khi bạn di chuột qua.

Giờ đây, bạn có thể có tất cả các lớp phủ biểu tượng mà bạn cần, cho trạng thái trong các đám mây khác nhau, cho các chỉ báo kho lưu trữ như cho các công cụ Rùa, v.v.


2
Ý tưởng đằng sau các lớp phủ là bạn có thể xác định trạng thái của đối tượng đang được quan sát "trong nháy mắt". Kế hoạch của bạn, trong khi sáng tạo, sẽ yêu cầu "sử dụng bàn phím hoặc chuột" để hiển thị thông tin. Không phải là tôi có một giải pháp tốt hơn ...
rbellamy

Nếu họ phải ở trong cửa sổ flyout, tại sao không chỉ đặt thông tin vào Thanh thông tin hoặc Ngăn xem trước hoặc một số nơi khác trong giao diện người dùng? Toàn bộ điểm của các biểu tượng lớp phủ là chúng thực sự được phủ lên và có thể nhìn thấy trong nháy mắt.
Cody Grey
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.