日本电影一区二区_日本va欧美va精品发布_日本黄h兄妹h动漫一区二区三区_日本欧美黄色

從零開(kāi)始系列,用C#做軟件產(chǎn)品:私人日記(二)開(kāi)發(fā)方法(“從零開(kāi)始”)

昨天寫(xiě)的開(kāi)篇,今天早晨起來(lái)一看,沒(méi)想到獲得了這么多網(wǎng)友的支持:

從零開(kāi)始系列,用C#做軟件產(chǎn)品:私人日記(二)開(kāi)發(fā)方法(“從零開(kāi)始”)

說(shuō)實(shí)話(huà),沒(méi)想到,有點(diǎn)小興奮。不過(guò)興奮之后,又有點(diǎn)惶恐,突然開(kāi)始擔(dān)心自己能力有限,寫(xiě)不出讓大家感興趣的內(nèi)容,導(dǎo)致江湖中又多了一個(gè)騙子。不過(guò)箭已在弦上,臨陣退縮不是我的風(fēng)格,那就盡我所能吧,盡量讓大家有所收獲。

廢話(huà)不多說(shuō),我們正式開(kāi)啟軟件產(chǎn)品設(shè)計(jì)的大門(mén)。

首先大概介紹下軟件開(kāi)發(fā)方法。

有人可能會(huì)問(wèn),什么是軟件開(kāi)發(fā)方法?你一個(gè)碼農(nóng)直接上代碼不就完了嗎,搞那么復(fù)雜?

如果是只解決某一個(gè)問(wèn)題,那肯定直接上代碼最有效。但我們是一邊做產(chǎn)品設(shè)計(jì),一邊寫(xiě)教程,并不是簡(jiǎn)單地教大家只做一個(gè)最底層的Coder,而是要讓大家了解更多的知識(shí),提高視野,這樣才能設(shè)計(jì)出更好的產(chǎn)品。

比如同樣是做私人日記這個(gè)項(xiàng)目,不同人的開(kāi)發(fā)方法可能會(huì)有很大不同:

  • A會(huì)事先把每個(gè)界面、每個(gè)類(lèi)、每個(gè)數(shù)據(jù)庫(kù)表,甚至每步操作應(yīng)該有哪些用戶(hù)提示都全部都設(shè)計(jì)好,剩下的任務(wù)就是編碼就好了;
  • B則先做一個(gè)初步的界面,然后再在此基礎(chǔ)上不斷豐富元素,添加相應(yīng)的功能,隨著時(shí)間的推移,功能逐步完善;

看到這里,大家可以暫停下。設(shè)想一下:你是A還是B?

其實(shí)無(wú)論哪個(gè),都沒(méi)有好壞對(duì)錯(cuò)之分,只有是否適合:

A的方法更高效,更適合做需求非常明確的項(xiàng)目。如果不提前設(shè)計(jì)好,開(kāi)發(fā)時(shí)就會(huì)造成理解偏差,如果做到最后發(fā)現(xiàn)跟之前需求不相符,就可能要重構(gòu),進(jìn)而影響開(kāi)發(fā)進(jìn)度。所以如果你做的是客戶(hù)委托的定制項(xiàng)目,那么必須提前做好詳細(xì)設(shè)計(jì),然后再跟客戶(hù)確認(rèn),以免最終客戶(hù)不認(rèn)可而無(wú)法交付。

B的方法更精準(zhǔn),更適合做自有產(chǎn)品研發(fā)。產(chǎn)品設(shè)計(jì)與開(kāi)發(fā)的過(guò)程其實(shí)更多的是創(chuàng)作,很多事情是沒(méi)有定式的。哪怕簡(jiǎn)單到一個(gè)按鈕的名稱(chēng),也可以有很多種叫法:保存、應(yīng)用、確認(rèn)、執(zhí)行、OK,也基本都能達(dá)意。另外創(chuàng)作是需要靈感的,可能琢磨了一天的功能都不滿(mǎn)意,突然晚上臨睡前一個(gè)靈感閃現(xiàn)就有了更好的方案。

我在本教程中采用B的方法,因?yàn)槲也幌虢o自己那么多的條條框框,我喜歡有很多的可能。比如很有可能隨著教程的更新,就會(huì)有用戶(hù)提出各種好玩的功能,然后我也認(rèn)同就加進(jìn)去了。就好像有些網(wǎng)絡(luò)寫(xiě)手寫(xiě)小說(shuō)一樣,不到最后誰(shuí)都無(wú)法知道結(jié)局,這多有意思!

看到這里,有人可能會(huì)問(wèn),這樣會(huì)不會(huì)太隨便了?20幾年的項(xiàng)目經(jīng)驗(yàn)啊,就這?確實(shí),如果按我上面的說(shuō)辭,逼格是低點(diǎn)。但是,如果用我打工的那些年曾接觸過(guò)的一些理論來(lái)說(shuō),境界或許會(huì)高一點(diǎn)點(diǎn),雖然道理都一樣。對(duì)我有深刻影響的理論有三個(gè)(因?yàn)橹荒苡涀∵@3個(gè)了)。理論的詳細(xì)內(nèi)容大家可以自行百度了解,我只講我認(rèn)為有用的:

一是微軟MSF(微軟解決方案框架)中的迭代開(kāi)發(fā)和質(zhì)量投資

迭代開(kāi)發(fā)就是先制訂一個(gè)小目標(biāo),然后實(shí)現(xiàn)它,然后繼續(xù)制訂下一個(gè)小目標(biāo),再實(shí)現(xiàn)它…如此往復(fù),一段時(shí)間后,你會(huì)發(fā)現(xiàn),已經(jīng)完成了若干個(gè)大目標(biāo)。

質(zhì)量投資則是把軟件質(zhì)量看成一種投資,既然是投資就要考慮投入產(chǎn)出比,而不是強(qiáng)調(diào)質(zhì)量第一。就好比學(xué)習(xí),80分提升到90分相對(duì)容易,而99分提升到100分可能就要多付出幾倍的努力,既然如此,我們不如把精力放在其他不足99分的學(xué)科上,相對(duì)更劃算。

二是金蝶實(shí)施方法論中的整體規(guī)劃、分步實(shí)施

整體規(guī)劃是確定方向和架構(gòu),樹(shù)立大局觀(guān);分步實(shí)施的思想則跟迭代開(kāi)發(fā)基本類(lèi)似。

三是WBS工作分解結(jié)構(gòu))的概念

就是把一個(gè)大目標(biāo)分解成若干小目標(biāo),等小目標(biāo)都完成了,大目標(biāo)也就完成了。迭代開(kāi)發(fā)是自下而上,WBS則是自上而下。

綜合以上,結(jié)合我們的產(chǎn)品設(shè)計(jì)思路,就基本確定了我們的開(kāi)發(fā)方法:

1、整體規(guī)劃,制定各階段目標(biāo);

2、功能遞進(jìn)式增加,隨時(shí)可以加入新的;

3、每個(gè)功能作為一個(gè)迭代版本,把每個(gè)功能作為一個(gè)目標(biāo)分解成若干小目標(biāo);

4、注意質(zhì)量投資,條條大路通羅馬,能解決問(wèn)題就好,別在一棵樹(shù)上吊死;

開(kāi)發(fā)方法就是理論,有了理論指導(dǎo),就不會(huì)被后面可能出現(xiàn)的各種問(wèn)題所困擾,它會(huì)指引你做出明智的選擇。

在上一篇文章中,我們制定了三個(gè)階段目標(biāo)。接下來(lái),我們就開(kāi)始進(jìn)入實(shí)操。

為了保證教程與GitHub(以后簡(jiǎn)稱(chēng)Git)代碼的一致性,需要大家預(yù)先安裝好Visual Studio 2019(以后簡(jiǎn)稱(chēng)VS),以方便今后的學(xué)習(xí)。

關(guān)于VS和Git,需要補(bǔ)充一下:

VS是微軟推出的代碼開(kāi)發(fā)環(huán)境,可以方便的編寫(xiě)和開(kāi)發(fā)C#程序。有人說(shuō)VS是收費(fèi)的,說(shuō)的沒(méi)錯(cuò),但是社區(qū)版對(duì)個(gè)人用戶(hù)是免費(fèi)的,企業(yè)用戶(hù)收費(fèi)。但對(duì)企業(yè)用戶(hù)的認(rèn)定標(biāo)準(zhǔn)是年收入100萬(wàn)美元或電腦臺(tái)數(shù)在250臺(tái)以上,所以其實(shí)對(duì)絕大部分人來(lái)說(shuō),連企業(yè)用戶(hù)的資格都?jí)虿簧稀?/p>

Git則是微軟提供的源代碼管理倉(cāng)庫(kù),可以方便的共享代碼。

如果大家在VS安裝或Git網(wǎng)站使用方面有疑問(wèn),可以在評(píng)論區(qū)留言,我會(huì)再發(fā)文專(zhuān)門(mén)介紹。

好了,接下來(lái)來(lái)完成今天的兩個(gè)小目標(biāo):一是創(chuàng)建一個(gè).net項(xiàng)目,二是讓它能夠運(yùn)行起來(lái)。

一、創(chuàng)建.net項(xiàng)目

打開(kāi)VS,菜單依次:文件->新建->項(xiàng)目

從零開(kāi)始系列,用C#做軟件產(chǎn)品:私人日記(二)開(kāi)發(fā)方法(“從零開(kāi)始”)

彈出的對(duì)話(huà)框中,上部的3個(gè)下拉框,我們依次選擇C#->所有平臺(tái)->桌面,下方會(huì)切換支持的項(xiàng)目類(lèi)型??梢钥吹街С趾芏?,我們這個(gè)教程主要還是面向初學(xué)者,就從windows程序入手,其他的先不去關(guān)心。

從零開(kāi)始系列,用C#做軟件產(chǎn)品:私人日記(二)開(kāi)發(fā)方法(“從零開(kāi)始”)

在下方選擇 windows 窗體應(yīng)用,注意不是windows 窗體應(yīng)用(.net framework)的那個(gè)(.net framework在微軟新的開(kāi)發(fā)架構(gòu)中已經(jīng)被拋棄了,換成了大一統(tǒng)的.net),然后點(diǎn)右下角的下一步。

接下來(lái):

從零開(kāi)始系列,用C#做軟件產(chǎn)品:私人日記(二)開(kāi)發(fā)方法(“從零開(kāi)始”)

項(xiàng)目名稱(chēng)就是我們這個(gè)階段的目標(biāo),因?yàn)槟繕?biāo)是Windows平臺(tái)下運(yùn)行,我起名為Diary.Win,如果這個(gè)項(xiàng)目是新建項(xiàng)目,我們還需要為這個(gè)項(xiàng)目建立一個(gè)解決方案的名稱(chēng),因?yàn)橐院筮€會(huì)加入第二、三階段的項(xiàng)目,以及其他類(lèi)庫(kù)的項(xiàng)目,所以解決方案我起名為Diary。位置大家根據(jù)情況可以任意指定。

設(shè)置好以后點(diǎn)下一步。

接下來(lái)是創(chuàng)建項(xiàng)目的最后一步,選擇目標(biāo)框架。

  • 如果是考慮到產(chǎn)品是最大適配,應(yīng)該盡可能地選最低的,有些系統(tǒng)默認(rèn)不支持高版本的框架;
  • 如果需要用到最新的框架或最新的語(yǔ)言特性,則應(yīng)該選最高的。

這里我們就選.net 5,方便后續(xù)開(kāi)發(fā)過(guò)渡。

從零開(kāi)始系列,用C#做軟件產(chǎn)品:私人日記(二)開(kāi)發(fā)方法(“從零開(kāi)始”)

全部沒(méi)問(wèn)題以后點(diǎn)創(chuàng)建。

稍等片刻,一個(gè).net項(xiàng)目就創(chuàng)建好了。

從零開(kāi)始系列,用C#做軟件產(chǎn)品:私人日記(二)開(kāi)發(fā)方法(“從零開(kāi)始”)

二、讓它能夠運(yùn)行起來(lái)

初始界面大致分成4個(gè)區(qū)域

從零開(kāi)始系列,用C#做軟件產(chǎn)品:私人日記(二)開(kāi)發(fā)方法(“從零開(kāi)始”)

  • 窗體設(shè)計(jì)界面用來(lái)設(shè)計(jì)用戶(hù)界面;
  • 文件管理器用來(lái)管理代碼文件;
  • 屬性窗口則可對(duì)窗口中的界面元素進(jìn)行精確的設(shè)置;
  • 輸出信息則為程序編譯或調(diào)試提供必要的信息,發(fā)現(xiàn)問(wèn)題時(shí)可以快速定位;

現(xiàn)在我們想要程序跑起來(lái),只需在工具條的運(yùn)行圖標(biāo)點(diǎn)一下,VS就會(huì)幫我們自動(dòng)編譯,并且運(yùn)行起來(lái)。

從零開(kāi)始系列,用C#做軟件產(chǎn)品:私人日記(二)開(kāi)發(fā)方法(“從零開(kāi)始”)

當(dāng)然,這只是一個(gè)空白的界面,除了左上角的一個(gè)Form1字樣,其他什么內(nèi)容都沒(méi)有。

從零開(kāi)始系列,用C#做軟件產(chǎn)品:私人日記(二)開(kāi)發(fā)方法(“從零開(kāi)始”)

但不管怎樣,我們已經(jīng)邁出了第一步。

說(shuō)實(shí)話(huà)上面兩個(gè)小目標(biāo)我自己都覺(jué)得辣眼睛,太水了。但是考慮教程既然是從零開(kāi)始,看評(píng)論也真有一些之前沒(méi)用過(guò)VS的,索性就從最基本的寫(xiě)起,不差這一天的更新。我也在這里保證一下,重復(fù)的內(nèi)容不會(huì)再出現(xiàn)第二次。

如果感興趣,別忘了關(guān)注我,以便及時(shí)獲取更新。

————————————————————————————–

對(duì)網(wǎng)友私信或評(píng)論做統(tǒng)一回復(fù)

以我對(duì)用戶(hù)的理解:如果有一個(gè)用戶(hù)向你提出問(wèn)題,那么可能會(huì)有十個(gè)用戶(hù)有同樣的問(wèn)題,但是他們沒(méi)有提出,所以針對(duì)用戶(hù)的提問(wèn)統(tǒng)一回復(fù)下,以加深彼此的了解。

>>做一個(gè)私人日記是一個(gè)好的想法。請(qǐng)問(wèn)一個(gè)45歲的人還能重頭學(xué)開(kāi)發(fā)嗎?

我覺(jué)得只要有興趣就沒(méi)問(wèn)題。

>>vs單機(jī)能裝嗎?必須要聯(lián)網(wǎng)裝嗎?我感覺(jué)好笨重,有沒(méi)有別的可以替代的能寫(xiě)c#的?

我還是建議聯(lián)網(wǎng)裝,只裝C#5個(gè)G足夠了,VS與C#是絕配。不建議在這上面浪費(fèi)時(shí)間。

>>期待教程,第三階段用什么技術(shù)呢?

我估計(jì)要排到明年了,那時(shí)MAUI .net6應(yīng)該成熟些了吧:)

>>感謝,會(huì)一直追隨,我這個(gè)C#愛(ài)好者最近發(fā)現(xiàn)裝不上前幾年下載的vs 2015 社區(qū)版,總說(shuō)安裝包損壞,請(qǐng)問(wèn)怎么解決,現(xiàn)在自學(xué)應(yīng)該下載哪個(gè)版本?

建議VS2019社區(qū)版。

做c#創(chuàng)業(yè)還行,用這門(mén)語(yǔ)言打工估計(jì)工資不高吧?

C#國(guó)內(nèi)生態(tài)目前確實(shí)要差些,不過(guò)工資不好說(shuō),物以稀為貴,現(xiàn)在的Java也快爛大街了吧?C#全棧開(kāi)發(fā)還是需要很多時(shí)間才能修煉成的,游戲、醫(yī)療、金融行業(yè)用C#相對(duì)多些。

想學(xué)習(xí),怎么獲取教程?

教程剛開(kāi)始做,每周更新1-3篇。代碼獲取方式文章下方有說(shuō)明。

都是剛做,我會(huì)像寫(xiě)網(wǎng)絡(luò)小說(shuō)一樣寫(xiě)教程:)

我最早只學(xué)過(guò)C語(yǔ)言和fortane語(yǔ)言,學(xué)這個(gè)C sharp行不行得通?

沒(méi)問(wèn)題。不過(guò)對(duì)初學(xué)者我都是建議先看下windows核心編程、數(shù)據(jù)結(jié)構(gòu)、設(shè)計(jì)模式,理解了這3本書(shū)的內(nèi)容,所有語(yǔ)言基本上都只是語(yǔ)法上的區(qū)別。

我在為自己的小孩開(kāi)發(fā)游戲,有興趣組個(gè)隊(duì)?

我也有過(guò)這個(gè)想法,但是感覺(jué)自己寫(xiě)不動(dòng)了:(

收徒不?

1對(duì)1的模式不符合互聯(lián)網(wǎng)思維,效率太低,看教程就可以:)

小團(tuán)隊(duì),c#是不是比java效率高?

開(kāi)發(fā)效率要看團(tuán)隊(duì)積累,java做項(xiàng)目有很多現(xiàn)成的代碼可以用,c#相對(duì)少些 運(yùn)行效率肯定c#更高。

啥叫獨(dú)立開(kāi)發(fā)者,能干啥?

這個(gè)目前還是一個(gè)比較模糊的概念。我覺(jué)得可以類(lèi)比獨(dú)立音樂(lè)人:沒(méi)有任何簽約的唱片公司,自己創(chuàng)作,自己錄歌,自己宣傳,代表人物就是趙雷。對(duì)軟件開(kāi)發(fā)來(lái)說(shuō),自己決定軟件產(chǎn)品的一切,包括但不限于功能、技術(shù)、盈利模式、市場(chǎng)推廣等等。

能干啥?我覺(jué)得是實(shí)現(xiàn)理想吧:)或者換種低調(diào)的說(shuō)法,解決碼農(nóng)的35歲危機(jī)。

私人日記是做什么的,像one note一樣的軟件嗎?

類(lèi)似吧。我覺(jué)得可能有誤會(huì),我是借用做私人日記這個(gè)項(xiàng)目來(lái)做C#的教程,教學(xué)是主要目的,產(chǎn)品功能要服務(wù)于教學(xué)內(nèi)容,而不是要跟one note對(duì)標(biāo)去搶占市場(chǎng)。

————————————————————————————–

本教程已作為開(kāi)源項(xiàng)目加入到Git,代碼內(nèi)容會(huì)隨教程實(shí)時(shí)更新,大家有興趣的話(huà)可以關(guān)注我,以獲得最及時(shí)的更新。私信:私人日記 可以來(lái)獲取Git的鏈接。

大家閱讀過(guò)程中有哪些看不懂或未盡興的地方,可以在評(píng)論區(qū)留言,我會(huì)先記下來(lái)在后續(xù)的教程中找機(jī)會(huì)再說(shuō)。

相關(guān)新聞

聯(lián)系我們
聯(lián)系我們
公眾號(hào)
公眾號(hào)
在線(xiàn)咨詢(xún)
分享本頁(yè)
返回頂部
兴文县| 西城区| 长寿区| 浮梁县| 江陵县| 阳西县| 新河县| 深水埗区| 乾安县| 兴山县| 高陵县| 吉水县| 忻州市| 商水县| 谢通门县| 蓬莱市| 新田县| 濮阳市| 海阳市| 台南市| 高碑店市| 银川市| 调兵山市| 聊城市| 镇平县| 科尔| 万州区| 长岭县| 永吉县| 昆山市| 大庆市| 呼玛县| 绥化市| 闽清县| 南城县| 冕宁县| 民丰县| 垦利县| 临颍县| 大连市| 和平区|