微信小程序制作
当前位置:网站首页 > 软件开发制作 > 软件开发一些不为人知的实战技术总结 返回列表

软件开发一些不为人知的实战技术总结

作者:admin 时间:2020-07-31 浏览量:667
如果你不能实际编写代码并开发软件,那么你所学到的所有软技能都不会对你有很大帮助。也许你会成为一名优秀的经理或管理人员,但不是软件开发人员。但是,如果您正在阅读本书的这一部分,我假设您有兴趣成为一名软件开发人员 - 或者更好的 - 所以让我们谈谈您需要了解的技术技能。现在,这是一个倾向于压倒许多初级软件开发人员的话题,因为你可能感觉有  很多东西需要知道,甚至很难  知道从哪里开始。
我将尝试将其分解为最有用和最  有益的  技术技能,这些技能最有助于您  成为软件开发人员。
本章绝不是一本详尽的列表,列出了作为软件开发人员可能需要的所有技术技能,但我已经尝试列出了必要的技术,并在此给出了概述。
所以,如果没有进一步的说明,这里简要介绍一下我认为最重要的技术技能。一种编程语言我认为我们最好从这个开始,不是吗?不知道编程语言真的不能成为程序员 - 你知道我的意思吗,对吧!
不过,我会很快说  ,选择哪种编程语言  并不像你想象的那么重要。
相反,让我们来谈谈为什么我建议从一种编程语言开始,而不是试图学习太阳下的一切。
许多初学程序员试图通过一次学习几种编程语言或在他们尝试作为软件开发人员完成第一份工作之前来充实自己。
虽然我认为你最终应该学习不止一种编程语言,但  我建议不要提前做,  因为它只会导致混乱,并且会将你的精力从你需要学习的许多其他技术技能上转移开来。
相反,我建议你  深入学习并学习单一编程语言的细节,这样你就可以对用这种语言编写代码的能力充满信心。
我挑选几本入门级的书籍和文章进行推荐,比较深入的书 等你学完可以自行选择购买
如何构造代码
在学习了编程语言之后 - 或者最好在学习它的同时 - 我坚信你需要知道的下一件事是如何正确地构建你的代码。
构建代码我的意思是什么?
我的意思是编写  好的,清晰的,可理解的代码,不需要大量的注释,因为代码本身是通用的。
许多软件开发人员在没有学习这项技能的情况下经历了整个职业生涯,这很不幸,因为这是我和其他许多人评判软件开发人员技能和能力的主要方式。
良好的代码结构表明了对工艺的专注,而不仅仅是完成工作。
构建代码实际上是软件开发的艺术部分,但它也很重要,因为您和您的同事必须使用代码将花费更多时间来维护现有代码而不是编写新代码。
我不打算在本书中详细介绍如何正确构建代码 - 就像我说的 - 我已经为您提供了一个很好的资源,但  您应该努力学习如何从一开始就编写好的,干净的代码 而不是事后学习这个技能。
我可以保证,即使你是初学者,如果你能写出好的,干净的,简洁的,可理解的代码,在结构本身中表达它的意义,那么任何看到你的代码的浏览者都会  认为你是经验丰富的专业。
在某种程度上,你将会,或者至少在未来的道路上,因为你将把编码视为一种职业,而不仅仅是一份工作
书籍和文章推荐:
面向对象设计
这个是有争议的,特别是如果你正在学习一种非面向对象(OO)的程序语言,但是  足够的软件开发世界会考虑OO设计,所以你需要确保你理解它。
面向对象设计  是一种设计复杂程序的方法,这些程序将它们分解为单个类或对象(类的实例化),它们封装了功能并具有特定的角色和职责。
在软件开发中,  我们总是试图管理复杂性。
根据对象进行思考有助于我们这样做,因为它允许我们从一堆交互组件中定义和设计一个复杂的系统,而不是试图从整体上解决整个复杂性。
今天有很多函数式编程语言,但是  在软件开发中你会发现的最流行的语言和模式仍然会受到面向对象设计和分析的影响。。
您应该很好地理解类是什么,不同类型的继承是什么 - 以及何时使用它们 - 以及理解多态  和封装等术语  。
算法和数据结构
如果您参加传统的大学或大学计划获得计算机科学学位,这将是您将要学习或将要学到的内容的很大一部分。
算法是解决各种计算机科学/编程问题的常用方法。
例如,有几种算法通常用于以编程方式对事物列表进行排序。这些排序算法中的每一种都有一组不同的属性,包括速度,内存大小要求以及它所处理的理想数据类型。
在计算机科学领域有许多这样的算法,理解如何编写  这些算法的自己变体  以解决在解决实际编程问题时可能遇到的棘手问题也  很重要。
通常,熟悉算法可以让一个开发人员在一小时内解决问题,这可能需要另一个开发人员几天才能弄明白。
除非你熟悉并且熟悉算法,否则你  甚至不知道已经存在一个优雅的解决方案。所以,仅仅因为这个原因,我认为这是一项有价值的技能。数据结构属于类似的类别,  并与算法结合使用。所有软件开发人员都应该熟悉几种数据结构,包括:通过很好地掌握数据结构和算法,您可以轻松而优雅地解决许多困难的编程问题。
当我第一次开始编程时,我在数据结构和算法上非常糟糕,因为我主要是自学成才。
很快,很明显这些技能在真正的编程世界中是多么有用,因为我遇到了以前不知道如何解决的问题,现在这些问题非常容易和有趣。
事实上,  我认为这是软件开发中最有趣的领域之一。通过解决一个棘手的问题并利用数据结构和算法来开发一个干净,优雅的解决方案非常有效。
学习这些东西是一个挑战,但非常值得。这是可以让你远远超过同龄人的技能之一。 软件开发人员的大多数人都在这方面设备不足。
如果你想通过微软或谷歌等公司的面试,  你肯定需要掌握这个技能。
您应该对至少一个开发平台以及随之而来的相关技术或框架有一些经验和掌握。
嗯,  通常它意味着操作系统(OS),但它也可以应用于其他类似于操作系统的抽象。
例如,您可能是专注于Mac或Windows操作系统的Mac开发人员或Windows开发人员,但您也可以是专注于特定Web平台的Web开发人员。
我不想将其归结为关于平台究竟是什么的讨论 - 不同的人会有不同的意见 - 但为了讨论的目的,  我将把平台定义为您开发的特定环境,它有自己的生态系统和特殊性。
再一次,这是另一个我不认为你 选择的东西如此重要的东西,就像你选择的东西一样。
公司通常雇用开发人员来开发特定的平台或技术。
如果您具有该特定平台的专业知识,那么作为iOS开发人员获得工作将更容易。
这意味着熟悉平台本身,以及程序员在为该平台开发时通常使用的开发工具,惯用模式和通用框架。
您可能认为编程语言的选择决定了平台,但实际上很少这样。
今天拿C#。您可以成为C#开发人员并为Windows,Mac,iOS,Android,Linux甚至嵌入式系统编写代码。
所以不要只选择一种语言; 选择一个平台。
除了学习特定的编程语言和平台之外,我还强烈建议学习一个框架,或者更好的是,一个完整的开发堆栈。
框架只是一组用于在特定平台或多个平台上开发代码的库。它通常使该平台上的常见编程任务更容易。
回到C#示例。大多数C#开发人员使用.NET Framework编写C#应用程序。.NET Framework由许多库和类组成,这些库和类允许C#开发人员在更高的抽象级别工作,因为他不必在每次想要做某事时完全重新发明轮子。
例如,.NET Framework的一部分包含用于处理图像的代码。这段代码从头开始编写起来非常困难,因此框架对于编写需要以某种方式操作图像的代码的C#开发人员来说是一个巨大的好处。
技术栈有点不同。 技术栈是一组技术,通常包括框架,它们通常一起用于创建完整的应用程序。
MongoDB是一种数据库技术。
Express.js是一个用于创建Web应用程序的Node.js框架。
AngularJS是一个前端JavaScript框架,用于为Web应用程序创建用户界面。
最后,Node.js是一个用于在JavaScript中开发基于Web的应用程序的运行时环境。
技术栈使创建应用程序变得更容易,  因为它们提供了许多开发人员用来开发应用程序的通用范例,因此可以轻松地共享知识,并且可以确保一组特定的技术可以协同工作。
学习技术栈可能非常有价值,因为这意味着您拥有开发完整应用程序所需的所有技能。许多拥有使用特定技术栈开发的应用程序的公司将寻找熟悉该技术栈并可以立即运行的软件开发人员。
基础数据库知识
虽然数据库的情况在过去几年中已经发生了很大的变化,但我认为数据库不会很快消失,所以我认为你可能应该对它们有所了解,不是吗?
在编写本文章时,  有两种主要的数据库技术:关系数据库和文档数据库。
我想说今天的开发人员至少应该熟悉关系数据库,并且可能也应该对非关系数据库有一些了解。
在软件开发中,数据库通常用于存储应用程序的数据。
当然,有些团队会有专门的数据库开发人员或数据库管理员(DBA),但这并不能让您至少不了解数据库的基础知识。
至少,你应该知道:
版本控制是任何软件开发项目的一个组成部分。
回到当年,在我们使用版本控制之前,我们将拥有项目所有文件进行网络共享,或者我们用U盘或者硬盘来回拷贝项目代码。
至少在大学时,进行项目开发和毕业设计的时候,我都是这么做的。
但是,  我当年比较年轻。我真蠢。你没有必要。
今天几乎所有的专业开发人员都应该知道如何使用版本控制来提交代码,检查代码,并希望合并来自多个源的更改。
最基本级别的版本控制允许您保留对软件项目中不同文件所做更改的历史记录。
它还允许多个开发人员同时处理相同的代码  并将这些更改合并在一起。
我不会在这里详细介绍,但  您应该知道如何使用至少一个版本控制系统,并且您应该熟悉大多数基本的源代码控制概念。
几乎所有专业软件开发团队都会在当今的软件开发领域中使用某种版本控制。
构建和部署
今天,大多数软件开发项目都有某种自动构建和部署系统。
有几种不同的软件应用程序可以帮助团队自动完成这两项任务,这些任务曾经是手动的,对于某些团队来说仍然如此。
你问什么是构建和部署?
好问题。
至少,构建系统将编译所有代码并确保没有编译错误。
复杂的构建系统  还可以  运行单元测试或用户测试,运行代码质量检查,并提供  有关代码库当前状态的一些报告。
部署系统  将负责将代码部署到生产计算机或部署到某种测试环境。
您不必是这些技术的绝对专家,但  至少要了解这些系统如何工作的基础知识以及构建和部署代码的过程非常重要。
通常,创建和维护构建和部署系统的实际责任属于一个快速增长的领域,称为DevOps(开发人员操作的简称)。
但是,这并不能成为您理解至少这个过程如何运作的基础知识的借口。
过去,开发人员不必了解有关测试的知识。
我们会编写一堆代码并将其“扔到墙上”  给一群测试人员,他们会在我们的代码中发现各种错误,我们会修复错误,就是这样。
不再。
有这么多软件项目采用所谓的敏捷过程(我们将在讨论方法时对此进行更多讨论),软件开发人员和测试人员必须  更紧密地合作。
**质量确实成为整个团队的责任 -**我认为它一直都是。
话虽如此,您需要了解有关测试的知识。
你应该至少熟悉一些基本术语,比如:

白盒测试
黑盒测试
单元测试(不是真正的测试)
边界条件
测试自动化
验收测试

我假设你至少想要成为一名优秀的开发人员 - 在将自己的代码提供给其他人之前测试它们。
如果你真的想成为一名专业人士,而不仅仅是一个黑客,这是不容  谈判的。
调试
啊,许多新手软件开发人员将他的梦想砸在调试器的磐石上。
每个人都想写代码,对吗?
但是,没有人想调试他们的代码吗?你听到了吗?
真相时间。
作为一名软件开发人员,您将花费大约90%的时间来确定  您的代码无法运行的原因。
我知道这不富有魅力。我知道你只想整天编写新的代码,但这个世界并没有这样做。
如果你使用测试驱动开发这样的方法,你可能会花很少的时间在调试器上,但无论你做什么,无论你如何尝试和绕过它,  你将不得不学习如何调试你的代码  或别人的。
所以,不要对自己知道的必须做的事情采取随意的方法,你应该  咬紧牙关,学习如何有效地做到这一点。
你需要知道的事情清单还有吗?这么吓人!
如果没有,这里还有一个 - 但我保证这是最后一个。
虽然一些软件开发团队刚刚开始编写代码并在完成后完成工作,但  大多数团队都有一些他们至少假装遵循的方法。
(顺便说一下,请注意:  不要指望任何团队真正遵循他们自称使用的软件开发方法。我不是想在这里玩世不恭或指责。我只是一个现实主义者,而我碰巧知道有很多人说他们正在做像Scrum这样的软件开发方法,因为他们每天都会举行会议。)
因此,至少熟悉最常见的软件开发方法背后的一些基本思想至关重要。
今天,我想说这些是  瀑布式开发  和  敏捷开发。
大多数团队都声称他们正在做敏捷。敏捷本身就是一个非常宽松的概念,但是有一些实践,而且,我敢说,如果你想能够谈论谈话,你可以说,并且适合敏捷团队,你应该注意的仪式。
我们将在关于软件开发方法的章节中更深入地讨论这个问题。我知道这是相当多的东西,而且我在这些主题的大部分内容上几乎都没有深入进去。现在你可能会感到有些不知所措,  并且你不了解这些技术技能的大部分内容。
联系方式:18066528545   029-89298792

阅读过此文章的读者,还阅读过下面的文章

  • 小程序与原生APP那个好?下面我们就来一起了解一下小程序与原生APP那个好。以下是所整理的小程序与原生App的内容,希望对你有所帮助。

    小程序的优点:

    基于微信平台开发,享受微信自带的流量,这个优点最大
    无需安装,只要打开微信就能用,不占手机内存,体验好
    开发周期段,一般最多一个月就可以上线完成
    开发所需的资金少,所需资金是开发原生APP的一半不到
    小程序名称是唯一的,在微信的搜索里权重很高
    容易上手,只要之前有HTML+CSS+JS基础知识,写小程序基本没有大问题
    基本不需要考虑兼容性问题,只要微信可以正常运行的机器,就可以运行小程序
    发布,审核高效,基本上午发布审核,下午就审核通过,升级简单,支持灰度发布
    开发文档完善,社区活跃
    支持插件式开发,一些基本功能可以开发成插件,供多个小程序使用
    小程序的缺点:
    局限性很强(比如页面大小不能超过1M,不能打开超过5个层级的页面,样式单一,小程序的部分组件已经是成型的- 了,样式不能修改,比如幻灯片,导航)只能依赖于微信依托与微信,无法开发后台管理功能
    不利于推广,推广面窄,不能分享朋友圈,只能分享给朋友,附近小程序推广,其中附加小程序也收到微信限制
    后台调试麻烦,因为API接口必须https请求,且公网地址,也就是说后台代码必须发布到远程服务器上;当然我们可以修改host进行dns映射把远程服务器转到本地,或者开启tomcat远程调试;不管怎么说终归调试比较麻烦
    前台测试有诸多坑,最头疼莫过于模拟器与真机显示不一致
    js引用只能使用绝对路径,不能操作DOM
    原生App优点:
    原生的相应速度快
    对于有无网络操作时,譬如离线操作基本选用原生开发
    需要调用系统硬件的功能(摄像头,拨号,短信蓝牙…)
    在无网络或者弱网情况下体验好
    原生App缺点:
    开发周期长,开发成本高,需要下载
  • 小程序和Vue写法的区别?下面我们就来一起了解一下小程序和Vue写法的区别。以下是我所整理的小程序和Vue写法的区别,希望对你有所帮助。

    遍历的时候:

    • 小程序wx:for=“list”,
    • 而Vue是v-for=“item in list”

    调用data模型(赋值)的时候:

    • 小程序:this.data.item // 调用,

    • 小程序:this.setDate({item:1})//赋值

    • Vue:this.item //调用,

    • Vue:this.item=1 //赋值

  • 小程序调用后台接口遇到那些问题?下面我们就来一起了解一下小程序调用后台接口遇到那些问题。以下是所整理的小程序调用后台接口遇到的问题,希望对你有所帮助。

    数据的大小限制,超过范围会直接导致整个小程序崩溃,除非重启小程序

    小程序不可以直接渲染文章内容这类型的html文本,显示需要借助插件
    注:插件渲染会导致页面加载变慢,建议在后台对文章内容的html进行过滤,后台直接处理批量替换p标签div标签为view标签,然后其他的标签让插件来做
  • 分析微信小程序的优劣势?下面我们就来一起简单的了解一下微信小程序的优劣势。下面是所整理的微信小程序的优劣势,希望对你有所帮助。

    优势:

    容易上手,基础组件库比较全,基本不需要考虑兼容问题
    开发文档比较完善,开发社区比较活跃,支持插件式开发
    良好的用户体验,无需下载,通过搜索和扫一扫就可以打开,打开速度快,安卓上可以添加到桌面,与原生APP差不多
    开发成本比APP要低
    为用户提供良好的保障(小程序发布,严格是审查流程)

    劣势:
    限制较多,页面大小不能超过1M,不能打开超过5个层级的页面
    样式单一,部分组件已经是成型的,样式不可修改,例如:幻灯片,导航
    推广面窄,不能分享朋友圈,只能通过分享给朋友,附加小程序推广
    依托与微信,无法开发后台管理功能
    后台调试麻烦,因为api接口必须https请求且公网地址
    真机测试,个别安卓和苹果表现迥异,例如安卓的定位功能加载很慢

  • 简单描述下微信小程序的 相关文件类型。下面我们就来一起了解一下微信小程序的 相关文件类型。以下是所整理的微信小程序的 相关文件类型,希望对你有所帮助。

    wxml 模板文件,是框架设计的一套标签预言,结合基础组件,事件系统,可以构建出页面的结构

    wxss 样式文件,是一套样式语言,用于描述WXML的组件样式
    js脚本逻辑文件。逻辑处理网络请求
    json配置文件,小程序设置,如页面注册,页面标题及tabBar
    app.json 整个小程序的全局配置,包括:
    pages:\[所有页面路径]
    网络设置(网络超时事件)
    页面表现(页面注册)
    window:(背景色,导航样式,默认标题)
    底部tab等
    app.js 监听并处理小程序的生命周期函数,声明全局变量等
    app.wxss 全局配置的样式文件

  • 请谈谈原生开发小程序,wepy,mpvue的对比?下面我们就来一起了解一下原生开发小程序,wepy,mpvue的对比。个人认为,如果是新项目,且没有旧的 h5 项目迁移,则考虑用小程序原生开发,好处是相比于第三方框架,坑少。

    而如果有 老的 h5 项目是 vue 开发 或者 也有 h5 项目也需要小程序开发,则比较适合 wepy 或者 mpvue 来做迁移或者开发,近期看wepy几乎不更新了,所以推荐美团的mpvue。
    而如果如果团队前端强大,自己做一套框架也没问题。

029-86195145 180 6652 8545 西安嘉瑞德网络科技公司
工作时间:周一到周六 8:30-18:30
邮箱:2528823962@qq.com
QQ:2528823962
地址:陕西省西安市未央元朔路明丰伯马都A座10820室
  • 微信小程序制作微信二维码
    扫码咨询
Copyright © 2015 西安嘉瑞德网络科技有限公司 陕ICP备17015187号-1