這種代碼的思路是什麼?

&
&
&
&

&

上面Data的值顯然不是很友好。

再舉個例子

&


以前計算機未普及時門檻高,人們搞不懂問題時都誠惶誠恐虛心學習。現在普及了,遇到問題先把專業資料批判一番。

連我這樣非計算機專業,也不混it業的人都知道根號√的十六進位碼就是#x221A

"F1 M 20,20L 24,10L 24,24L 5,24"這種利用路徑標記在data直接畫圖如此貼心的功能,本來就是在blend里畫的,為什麼要拿出來"友好地可讀"?一個按鈕里的簡單圖形還要單獨拿出來先定義,引用資源,還取名,編一本字典?

我是真想造火箭,可是這樣難的東西讓我怎麼下手?

==========================================

看了一下,微軟為了展示多樣性和普適性,特意做了四個按鈕,分別展現了圖標枚舉,引用資源,十六進位編碼,路徑標記畫圖。那個Icon="Like"不是友好可讀的枚舉?難道一個範例代碼的思路不是充分展現核心功能,而去重複填四個可讀的枚舉單詞?枚舉以外的就不管了?難以理解這種怨念

(其實我覺得路徑標記可讀性不比小學畫烏龜的logo語言差,你不要太黑它)

寫這原文的工程師一定哭暈在廁所

  • FontIcon - 此類圖標基於指定字體系列的字形。
  • BitmapIcon - 此類圖標基於指定了 Uri 的點陣圖圖像文件。
  • PathIcon - 此類圖標基於 Path 數據。
  • SymbolIcon - 此類圖標基於 Segoe UI Symbol 字體中的預定義字形列表


這個"F1 M 20,20L 24,10L 24,24L 5,24"是路徑描述語言,是W3C搞的,

畫SVG就要用這個。

以前微軟搞自己的,你們說他封閉;

現在人家遵守W3C的規則。你們嫌他丑。

真難伺候。

#x221A 是HTML編碼,你沒寫過,就去找個網站F12。看看人家特殊符號是怎麼表示的。

明明是自己無知,還要把標準批判一番。

這些人還真是……

------------------------------

目測沒有人提改進的,全是在護軟。

來來來,我強行護個軟給你看。

為什麼要提供路徑描述語言的解決方案?

這需要解釋么?因為自由啊。

我不清楚微軟這個方案能不能用路徑生成不規則的icon,但是至少應該是可以弄出不規則的icon背景的。

只要字元串就可以隨心所欲的繪製icon,然後靠修改fill屬性就能製造一組表示不同action的icon,比起緩存一堆PNG不知道高到哪裡去了。當然,缺點是這種只能畫矢量的,也就是微軟modern風格的icon。

計算方法在這裡:d - SVG | MDN

為什麼不把html編碼都做成枚舉?

說你naive你還不信。

這東西做成枚舉改個好讀的名字真能提高可讀性改善開發效率的話,

W3C早做了,還輪得到微軟來搞?

HTML URL 編碼

你當然可以自己弄個變數存自己常用的,但是這麼多都起個名,某些字元的代號可能會長得讓人噁心,完全起不到改善編程體驗的作用。

而且M$家的VS是可以直接查看這些蛋疼的編碼的,滑鼠指上去就行了,並不會顯著影響閱讀。

至於這個Symbol enumeration,這是人家M$特有的,不是W3C的,當然不能用人家的編碼方式,萬一W3C加個字元然後衝突了,蛤蛤蛤蛤蛤。

還好我的工作不是在微軟平台上寫代碼,看這個純為找茬。

說實話,我寫這個也並不是為了科普,就是看題主覺得瑟覺得不爽,上來彈壓彈壓他。

-----------------------------------

最後,利益相關:

WPF和http://ASP.NET使用者


「#x221A;」是「√」符號的編碼形式,這麼些可以避免文件本身的編碼影響內文的記錄。

「F1 M 20,20L 24,10L 24,24L 5,24」是 SVG 的路徑描述語言,體系粗略繼承自 Postscript(除了改用更好看的前綴表示外),如 M 表示「Move to」,L 表示「Line to」。


你首先要搞清楚這是不是微軟設計的。

我也很不喜歡這種東西啊。

我還很討厭XML/HTML/SGML裡面表示連續的可以換行的空格都要用各種黑科技呢。

但是微軟應該重新發明一套標記語言來描述界面么?

到時候估計你爽了,大家都罵娘了。

所以說,你茲辭不茲辭根本沒人在意好不。括弧笑。

===================================================================

問題修改後的補充

官方文檔一共寫了四個Example,描述了四種怎麼搞個AppBarButton的方式,然後你說這文檔寫的好爛啊,為啥不用第一種方式呢?

旁友,你這黑微軟的思路真的是很驚奇啊。

Quickstart: Adding app bar buttons (Windows)

文檔截圖附於下:

====================================================================

我們還是別來談代碼的思路了,還是來談談您黑微軟的驚奇的思路吧。

首先最初的問題是指出XML Entity和SVG的可讀性很差,這個我不反對,我一直覺得W3C那群書獃子從來沒有一個優美的方案出來,全TM充斥著各種奇怪的語法規則。譬如說XPath的裡面的表達式,加是+,減是-,乘是*,除是div。

然而,然而,這倆奇葩的語法根本就不是微軟發明的啊。

被人指出錯誤後,閣下馬上改口,表示,我見的多了,美國那個華萊士,比你們不知道高哪裡去了,,,,,,這種東西我還會不知道么,我就是說微軟明明有更好的方案,為啥要寫這麼噁心的東西在這裡呢?

然而,然而,這是Example啊,微軟列舉了四種方案,沒有非要你用哪一種,而是根據實際情況選擇最合適的。

然後閣下又要改口了,連理由我都幫您想好了。

你看微軟搞個圖標都這麼多種方案,沒有一個好用的,就是垃圾。

嗨,您要黑微軟就直說嘛,假惺惺的提問幹啥?搞得我們還以為是什麼初學者沒被W3C虐過訴苦來了。

話說我們大家根本不是什麼護軟,而是您這黑的實在太低級了。

.NET那一堆黑點找哪個不好,,,

譬如說那個該死的cache-control自動給值的問題直到4.5.2才加個破屬性來關閉:

HttpResponse.SuppressDefaultCacheControlHeader 屬性 (System.Web)

Google那個事兒逼非說這麼個破Header影響這影響那,搞得我只好寫個HttpModule強行注入進去幹掉(.NET Framework 4.5.2之前)。

譬如說這個莫名其妙的強修Bug的方法:

HttpCachePolicy.SetOmitVaryStar 方法 (System.Web)

譬如說這個Host標頭在.NET Framework 4之前是不能被設置的:

HttpWebRequest.Host 屬性 (System.Net)

還有Uri類型對傳進去的URL字元串到底是編碼了還是沒編碼的糾結處理太多槽可以吐了。

您要來一起吐槽我們也是很歡迎的,但是這種侮辱大家友善度的東西,還是少點吧。


人家就是一個字元。。。死乞白賴的給人家 bind 一個名字上去也不好。。。如果你覺得可讀性不好,自己寫一個 resource bind 一下咯。。。

如果微軟把名字給你 bind 好了,首先人家要花時間想名字,想完了之後一個可能還要好幾個名字,比如 back button 有人當 right arrow 用。。。你也要叫 right arrow 吧,最後還不能有重複的名字。。。有人用勾表示 read all 有人用 select all 表示,有人用 flag 表示 important 有人用 star 表示。。。

沒有名字好歹還能上 designer 上看,一目了然,有個錯的名字。。。科科科。。。那個可讀性就。。。biubiubiu 了

所以還是自己 bind 吧。。。一個程序員也不會在乎這兩行常數一樣的東西。。。


很無語,針對這個問題最後酸溜溜的幾句我要反駁一下。老版本的 AppBar 設計被拋棄了,因為可發現性不佳,而且形式太單一,其實效果並不好。不過這沒有什麼可抱怨的,新的控制項里還是提供了 AppBar 用於老軟體的遷移,並提供了更為靈活強大的 CommandBar。「這個東西在Win10里淡出了」 不實。


人家問的是「這種代碼的思路是什麼?」,沒有必要噴啊。

-----

題主就問了三件事兒:

1. 上面Data的值顯然不是很友好。

2. 我是真想支持微軟,可是這樣的東西讓我怎麼支持。Content的值也是怪怪的,弄個常量不好么?

3. 我查到了微軟的圖標枚舉(https://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.controls.symbol.aspx),但是它自己的文檔里為什麼不用呢?

----

直接回答啊

我的觀點是:文檔里給出多種可行方法,說明這一工具很靈活,使用者可以愛怎麼用怎麼用。這就是「這種代碼的思路」。

這四種用法是出現在MSDN文檔一個標題帶有「Quickstart」的頁面里的。

顯然,它們出現在這個頁面的目的向程序員展示所有可能的用法。意思就是"你看的XAML里可以用這四種方法中的任意一種來搞一個圖標,咋玩兒咋玩"。

1. 完全可以畫一個"Logo.svg" 然後用UriSource="ms-appx:///Assets/Logo.svg"/ 這種方法實現。在實際操作中,可以給這個圖標一個更直接的名字,比如Label="ZhiHuLogo",這樣在可讀性上並沒有什麼問題。那串Data一遍畫好,需要改的時候再說。其他答案里也說了,這個SVG可以直接在Blend里畫。你覺得不友好你可以不用,還有另外三種方法可以用。

2. 你可以用常量。這就是個求和符號的編碼,文件編碼沒問題的情況下完全可以直接寫 "Σ" 。同上,如果這裡的Icon叫「SigmaIcon」的話,也不存在可讀性問題。

3. 文檔里第一個例子是&已經用了微軟圖標枚舉里的Like。(打臉啪啪啪)

問題的根本在於,題主有一定的代碼潔癖(中性無貶義),而恰好題主又覺得「只有我是對的,你微軟設計東西怎麼都不按我的想法來?」

看這個純為找茬

哦*答完才看到這句話,這能不被噴?都說這麼明顯了你們還不舉報?


我很高興微軟使用W3C標準的svg格式的描述語言,對我來說,我可以直接從這串數字和英文字母中看出圖形,多麼方便啊!如果是題主自己來設計這個界面的描述語言,你會怎麼做呢?


用就是了,別這個那個的了,兄弟深一口悶!!!


data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAIAAACRXR/mAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RDUxRjY0ODgyQTkxMTFFMjk0RkU5NjI5MEVDQTI2QzUiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RDUxRjY0ODkyQTkxMTFFMjk0RkU5NjI5MEVDQTI2QzUiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpENTFGNjQ4NjJBOTExMUUyOTRGRTk2MjkwRUNBMjZDNSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpENTFGNjQ4NzJBOTExMUUyOTRGRTk2MjkwRUNBMjZDNSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PuT868wAAABESURBVHja7M4xEQAwDAOxuPw5uwi6ZeigB/CntJ2lkmytznwZFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYW1qsrwABYuwNkimqm3gAAAABJRU5ErkJggg==

上面這種怪怪的你支持不支持?

如果base64你認為不怪,那麼幾何圖形的坐標描述也不應該說怪。

他們都是為了在UI端簡單引用資源。

如果你認為base64怪,那麼我只能說你的理解能力導向問題。

nbsp;

上面這種字元你認為怪怪的,你支持不支持?

支持和反對 #x221A; 同理。 為了支持不同的平台編碼是需要轉換的。

這不是微軟問題,這是你的知識面問題。


你這個問題就不是問題,只是來批判一番的,想讓大家跟你一起批判而已。

最後,年輕人多修養心性,多念點書吧。


兄弟,沒了微軟還有java,c什麼的,千萬別學微軟的東西,windows超難用,部署iis還要開窗口,一點也不像linux用黑命令那麼酷炫。

還有entityframework,linq等等這些東西真是超難看的,一點也不像自己寫各種jdbc橋接高大上。

還有http://asp.net mvc,垃圾啊,一鍵生成網站,還各種模板動態綁定,還發明什麼razor語法糖,一點都不如php神馬的各種嵌套好看啊。

還有wcf,包裝太過方便,一點比不上自己寫socket完美啊。

更別說C#裡面各種泛型,匿名類型動態類型擴展方法,那都是別的語言不屑一顧的東西,哼哼。

至於樓主說的wpf的語法,簡直就是沒人性啊,自己搞個xaml格式出來,還和wwf進行通用數據通信,動態序列化載入窗體,還有winform,你以為不說你是吧,你和http://asp.net一樣,就是個拖控制項的貨,你讓多少程序員失業你造不?

所以樓主,在下搞.net8年了,深深的體會到,微軟太沒見識,還搞出神馬宇宙IDE,簡直罪大惡極,加上各種通用組件太多,搭建服務架構太過簡單,客戶都認為我們不值錢。

真的,樓主,這行真不能入啊!!!這行真不能入啊!!!這行真不能入啊!!!


問題是一個 windows 應用為何要支持 web 標準啊?

就這樣子我還不如直接用 web 相關技術做應用, 用你 windows 的輪子幹嘛?


推薦閱讀:

如何取消Windows10的關機更新?
windows許可證即將過期?求大神幫助。。(我安的雙系統)?
為何微軟的軟體評價大都不如其他公司的產品?
如何將原PC的Windows系統轉移到新PC去?
Surface Pro 4 什麼時候發布?

TAG:微軟Microsoft | MicrosoftWindows | Windows8 | Windows10 | UWPWindows開發 |