前言

写了多年的LabVIEW程序,你是否面临这样的问题

总是在做一些重复的工作,感觉很没有意思;
总在不停的写代码,做类似的控件,实现相同的功能,丝毫没有成就感;
总在天加班,没有时间去提高自己;

你也知道简单的重复并不能带来效率的提高,却不知道走向何方,无奈而又焦急着?

小黑今天继续带你聊一聊LabVIEW吸星大法,让你在工作中越来越有效率,体会一切皆可掌控的妙感~

记住,我们的口号是 : 告别重复造车,你的就是我的,万物皆为我所用~

引言

上一篇,我介绍UI控件的复用。通过UI Control的个性化自定义,可以在前面板层级实现复用和积累。今天介绍函数选板层级的复用,通过对个性函数选板的工作自定义,实现个人函数库的打造。

下面几张图贴出来的是小黑专属的函数选板,如果你学会了这招吸星大法,也将拥有属于自己的库函数。
Elton Architecture
Foder API
 
TestStand API
Quick Drop API
UI API

什么是函数库的复用?

函数库的复用指的是将工作经验积累,固化为LabVIEW常用函数,实现工作经验在函数上的展现。

为什么要进行函数库复用?

大多数工程师都处在一个特定领域,较长时间做着某一个领域的测控系统。

通过努力工作,伟大的工程师们会经历大大小小的坑,形成每个人特有的工作经验。这些工作经验促使工程师们遇到相似问题时可以顺利解决,然而,大多数时候,经验留在了的脑海中,很难去传授或者分享。

其实,只要对的这些经验稍加总结,每个人都可以将自己的经验以文件或者代码的形式表达,从而把脑袋中的知识固化,形成一套属于自己的工具。

LabVIEW工程师通过总结抽象代码工作,形成特定函数库,这样做会将重复编码降低到最少,抽出更多时间进行更有创造力的活动。

谁来进行函数库复用?

无论你是还未毕业的学生,或者是出入职场的菜鸟,还是久经职场的工程师,函数代码的复用都应当不停的进行,毕竟,代码复用对于一个软件工程师的诱惑还是非常大的。如果你还没有复用过代码,或者复用仅仅是从另一个项目中扒一些代码出来使用,那么函数库复用的这套方法可以让你轻松积累。无论是对自己的工作经验总结还是与团队小组分享,这些内容都将获益匪浅。


 什么时候进行函数库复用呢?
函数复用主要在两大环节使用,即总结阶段和使用阶段。

一般在项目结尾阶段,无论代码写的怎样我们都会获得项目发起人的验收。但软件工程师的复用工作才刚刚开始。通过分析整个软件在设计上的成功和失败之处,总结当前项目的复用点,将项目中有价值的VI和库函数重新整理设计,形成自己的库函数并添加到属于自己的函数选板上。随着时间的推移,函数功能愈加丰富,做项目也会更加得心应手。

总结出来的代码如果没有经过审核,那代码的稳定性和可靠性仍需验证。在新项目开启的时候,使用上一个项目所总结的代码,去验证迭代,不断升级自己的用户函数库,几轮之后,你将形成属于自己的代码风格。

怎么进行函数库复用呢?

核心:总结归纳,吸收利用!

吸星大法之总结归纳

总结归纳说起来容易,做起来却是颇有难度。小黑也不知道什么样的方法是最好的,这里仅仅介绍一下我是如何做的。

在刚开始进行函数库复用的时候,小黑严格遵循归纳总结的方法,在项目完成后单独抽一段时间去分析自己的代码,并形成了一套API库。

后来出于事后总结耗时间等原因,小黑在项目创建的过程就开始考虑部分复用问题。在设计代码模块的时候,提前问自己:这个代码模块是否有复用价值.,是否可以独立解耦。

如果回答有,将其单独放置于一个文件夹中,并且对文件的使用采用统一的命名规范,尽可能的将代码与其他模块解耦,减少或者固化特定的接口,最终实现复制文件夹即可复用代码的效果。下图即时小黑整理的一些可复用模块仅供参考。
 当然,在设计流程测试的时候,也编写一些驱动可服用模块

一开始文件夹规则设计不明确,建议大家都从简单复用开始。但是只要有归纳整理的心思,你将开启了复用积累的道路,持之以恒,积累会让你效率倍增。

吸星大法之吸收利用

与UI控件复用类似,为了避免重复造车,你需要去各个论坛或者VIPM狩猎自己可用的优秀的工具包。一旦找到心仪的猎物,马上将这些工具包Down下来,重新整理这些工具包,与自己的工作需求与代码风格结合,改装到自己的库函数中。这里需要强调的是,下载来的工具包可能功能丰富,而你只用到里面很小的一部分,摘取出来,而不是使用整个工具包,这将使得你有更大的动力去使用他们。

另外,如果说你不知道如何进行函数复用,不妨好好看看优秀的复用是怎么做的,别的不说,只谈OpenG工具,我们就可从中学习到复用的很多技巧。下面这个选板是OpenG的主选板,可以借鉴其分类思路和图标设计思路。

OpenG工具包通过对LabVIEW常用功能增强,实现了许多功能函数,从文件夹层级,可以了解到分类标准,吸收过来,也建立一套属于自己的API库。
从VI命名可以学习到一些命名的方式和规则,有助于我们写出工整的代码

我们会看到很多类似OpenG的工具包,这些工具包一定要妥善利用,除了直接下载使用,你可以在其功能上重新封装定义,形成一套自己用得顺手的工具,从而进一步拓展工具包在特定领域的积累。下图所示是小编一部分树形工具包的范例,在传统的Tree工具包上,根据特定的Tree操作,可以拓展自己在特定UI操作中的工具包。

后记

LabVIEW吸星大法,将你的经验积淀,吸收他人所长,形成属于自己的知识宝库。本文一样没有仔细展开如何去实现,只是从思想上引入了函数复用的概念,希望可以对大家重视经验在函数复用上的积累。

如果本文对你有所触动,真心希望你能去尝试尝试,体会一下积累的价值,告别盲目的加班,让工作更加有效率~

术业有专攻,闻道有先后,在知识大门前,我们可以略窥一二,却不知天外有天,人外有人。保持一颗谦逊的心,专注于技术的提高,精益求精~
 
-----谨以此文献给落入LabVIEW坑却仍不放弃的各位,我们不是专业的软件工程师,却有一颗上进的心。
 
 

LabVIEW 吸星大法 - 看见的好东西都是我的(中篇)的更多相关文章

  1. LabVIEW 吸星大法 - 看见的好东西都是我的(上篇)

    前言 写了多年的LabVIEW程序,你是否面临这样的问题 总是在做一些重复的工作,感觉很没有意思: 总在不停的写代码,做类似的控件,实现相同的功能,丝毫没有成就感: 总在天加班,没有时间去提高自己; ...

  2. LabVIEW 吸星大法 - 看见的好东西都是我的(下篇)

    前言 写了多年的LabVIEW程序,你是否面临这样的问题 总是在做一些重复的工作,感觉很没有意思: 总在不停的写代码,做类似的控件,实现相同的功能,丝毫没有成就感: 总在天加班,没有时间去提高自己; ...

  3. 低耦合高内聚 - 不要把所有东西都放在 vuex中

    我就举一个例子.比如,我想看电视,是否需要遥控器??请认真思考这个问题. 看似电视与“我”已经解耦了.然而,我需要通过遥控器去看电视,我的目的是看电视,但是我却需要依赖遥控器这个中间件.这就变相地将“ ...

  4. 从Hello World说起(Dart)到“几乎所有东西都是Widget”小部件。

    import 'package:flutter/material.dart'; void main() => runApp(new MyApp()); class MyApp extends S ...

  5. 用LabVIEW实现《家国梦》游戏中自动收货收金币

    前几周,很流行一个手机游戏,叫<家国梦>.我在手机上玩了一两天后,发现了两个问题: 1. 收货收金币太没意思,只需要手指滑在固定的路线,一会儿就烦了 2. 怎么追赶也追不上手快的人(当然也 ...

  6. 关于Unicode,字符集,字符编码,每个程序员都应该知道的事

    关于Unicode,字符集,字符编码,每个程序员都应该知道的事 作者:Jack47 李笑来的文章如何判断一个人是否聪明?中提到: 必要.清晰.且准确的概念,是一切思考的基石.所谓思考,很大程度上,就是 ...

  7. 重置了下系统好多关于mysql密码的文章都很渣拷分好的备用

    方法1: 用SET PASSWORD命令 mysql -u root mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass ...

  8. 输入URL之后都发生了什么

    输入URL之后都发生了什么 这个标题印象中已经有很多讨论了.也来说说这个话题. 从头开始,当你的电脑使用网线连接到网络的时候,我们都知道,这个时候你的电脑会获取一个IP,这个IP就是你的唯一标识了.好 ...

  9. LabVIEW有限状态机

    顺序模式是我们最先接触,也是最基本的一种编程模式, 程序按照固定的顺序依次执行,结束(如图1) 但在很多情况下,静态的顺序模式并不能满足我们编程的要求,我们需要更有效地动态结构来实时改变程序的执行顺序 ...

随机推荐

  1. Sublime 3 如何配置SVN插件

    在sublime里面安装svn的插件,就可以在sublime的操作界面里面进行相关svn操作,这样就不用再回到文件系统中,进行相关svn的操作. 1.在进入sublime界面后,点击顶部菜单“Pref ...

  2. JSP复习整理(五)JavaBean生命周期

    一.创建一个JavaBean UserBean.java package jsp.test; public class UserBean { private String userName; priv ...

  3. Python初学者应了解的技巧

    交换变量 x = 6 y = 5 x, y = y, x print x >>> 5 print y >>> 6 if 语句在行内 print "Hell ...

  4. 按行读取TXT文件中的内容

    public Dictionary<int, string> GetDicFromLog() { try { StreamReader sr = new StreamReader(file ...

  5. October 30th Week 45th Sunday 2016

    Genius is nothing but labor and diligence. 天才不过是勤奋而已. Labor and diligence are the requirements for s ...

  6. MySql触发器语法总结

    经过昨天多次失败,今天终于将我要实现的触发器功能写成功了,触发器代码如下: -- use dbfortest; drop trigger if exists tg_before_insert_on_d ...

  7. 如何在Eclipse下查看JDK源代码

    在Eclipse中查看JDK类库的源代码!!! 设置: 1.点 "window"-> "Preferences" -> "Java&quo ...

  8. 一个特殊情形的Mittag-Leffler分解

    Mittag-Leffler分解定理的证明有多种,比如可以利用一维$\overline{\partial}$的解来构造相应的函数,还可以利用极点主部的Taylor多项式来进行修正使得$\sum(g_{ ...

  9. PHPCMS v9 安全防范教程

    一.目录权限设置很重要:可以有效防范黑客上传木马文件.如果通过 chmod 644 * -R 的话,php文件就没有权限访问了.如果通过chmod 755 * -R 的话,php文件的权限就高了. 所 ...

  10. ghoest32 不重启电脑手动备份系统为.gho

    备份系统我们一般使用DOS之家的ghoest备份工具,但备份必须是重启电脑在DOS命令行下,其实,可以不重启电脑备份系统,也就是手动备份系统.DOS之家用的ghoest本质也是赛门铁克公司出的ghoe ...