在作者的工作经历中,每当同事评论项目代码质量的时候,作者听到最多的评论是“代码 写得很烂”或“代码写得很好”。作者认为,用“好”“烂”这样的字眼来描述代码质量是非常 笼统的。当作者询问代码到底“烂”在何处或“好”在哪里时,尽管大部分同事都能简单地罗 列几个“烂”的方面或好的方面,但他们的回答往往都不够全面,知识点零碎,也无法切中 要害。 当然,也有一些软件工程师对如何评价代码质量有所认识,如认为好代码是易扩展、易读、 简单、易维护的,等等,但他们对于这些评价的理解往往只停留在表面上,蓝狮注册登陆对于诸多 ...
蓝狮注册登陆推荐一款M1芯片电脑快速搭建集群的虚拟机软件
虚拟机软件太多了,出名的莫过于 VMware , VirutlaBox 以及 Parallels Desktop 。 我们使用虚拟机软件一般有两种用途: 安装不同于宿主机系统的拥有用户界面的操作系统,蓝狮注册开户比如Windows安装桌面版 Ubuntu ,Mac安装 Windows 等,用于日常工作和生活的使用;这一需求我目前使用 Parallels Desktop 来解决,在我本机上安装了 Windows 和 Ubuntu 的桌面版。 Parallels Desktop 除了贵,没有其他问题! 另一种是便于开发者快速创建和部署虚拟化开发环境(集群环境),本文推荐的虚拟软件就是这个作用。之前我在Wi ...
蓝狮注册登陆Angular v14 被低估的一个 DI 特性 inject
大家都知道 angular 在 2022年6月2日正式发布了 v14 版本,具体更新说明查看官方博客: https:// blog.angular.io/angular -v14-is-now-available-391a6db736af 那么我认为 Angular 本次在 v14 版本中最被低估的一个特性就是:蓝狮注册开户 inject 函数可以在构造函数和属性初始化中使用,在过去的版本中只能在 factory 中使用,那么这个被低估的特性在官网v14发布博客中居然都没有被提及到,令人匪夷所思。 Angular DI api 介绍首先回顾一下 Angular DI 的基础知识,在 Angular 应用中的组件/指令/管道中如果需要使用某个 ...
蓝狮注册登陆如何将HTML与Htmx一起使用并减少JavaScript代码量
html作为宇宙的中心众所周知,全球互联网得以蓬勃发展在很大程度上归功于HTML和css。Javascript(JS)可以充当HTML和CSS之间的粘合剂,使页面更具动态性和交互性,但Web编程的历史发展不同。在客户端渲染和其他类似技术出现之后,使用JS创建Web应用程序变得更加困难。 什么是Htmx?Htmx是一个库,允许用户使用简单的标记创建现代且强大的用户界面。蓝狮注册登陆多亏有了它,可以直接从HTML元素执行AJAX请求、触发CSS转换、调用WebSocket和服务器发送的事件。 SSR应用Htmx的使用促使人们逐渐放弃客户端渲染(CSR),转而支持 ...
蓝狮注册登陆ECMAScript 提案:.findLast()和.findLastIndex()从尾到头搜索数组
查找数组元素下面有三种方法从头到尾查找数组元素。 方法一: [‘a’, ‘b’, ‘a’].indexOf(‘a’) // 0[‘a’, ‘b’, ‘a’].indexOf(‘c’) // -1方法二: [‘a1’, ‘b’, ‘a2’].find(x => x.startsWith(‘a’)) // ‘a1’[‘a1’, ‘b’, ‘a2’].find(x => x.startsWith(‘c’)) // undefined方法三: [‘a1 ...
蓝狮注册登陆用 JavaScript 编写枚举的最有效方法
JavaScript 语言本身不支持枚举。如果我们想模拟枚举,我们可以使用一个对象。 假设有这样一个场景,我们需要统计一下员工的技术栈,目前我们需要标记的技术有 css、JavaScript、html、WebGL。 然后我可以这样写枚举: const SKILLS = {CSS: 1 ,JS: 2,HTML: 3,WEB_GL: 4}之前是这样写的,但是最近看vue源码的时候,蓝狮注册开户发现了一个高效使用枚举的技巧,在这里分享给大家。 定义枚举我们可以这样写上面的枚举: const SKILLS = {CSS: 1 ,JS: 1 << 1,HTML: 1 << 2,WEB_GL: 1 << 3} < ...
蓝狮注册登陆Node.js/Deno 之父关于JavaScript成为新一代容器的思考
服务端绝大部分程序都是 Linux 程序。这些程序一般由文件系统、一些可执行文件,一些共享的库文件(这些库文件与一些系统库例如 systemd 或者 nsswitch 做交互)。 Docker 让使用 Linux 容器变得更容易,也更流行。系统级别的虚拟化让发布服务端程序有一套不错的机制。每一个容器镜像都是一个无依赖且可以立即执行的软件包。 因为服务端软件经常依赖很多系统资源和配置,在过去部署这些软件是一件有挑战的工作。Linux 容器很好的解决了这个问题。 我们可以在浏览器的 JavaScript 发现一个类似这样的环境,只不过是一个 ...
蓝狮注册开户React技巧之中断map循环
总览在react中,中断 map() 循环: slice()map()export default function App() {const employees = [{id: 1, name: ‘Alice’, country: ‘Austria’},{id: 2, name: ‘Bob’, country: ‘Belgium’},{id: 3, name: ‘Carl’, country: ‘Canada’},{id: 4, name: ‘Delilah’, country: ‘Denmark’},{id: 5, name: ‘Ethan’, country: ‘Egypt’},]; // :point_down:️ map() first 2 elements of array ...
蓝狮注册开户TypeScript let与var的区别
1、作用域不同用var声明的变量,只有函数作用域和全局作用域,没有块级作用域。而let可以实现块级作用域,只能在代码块{}内有效,在{}之外不能访问,如下代码所示: {let a = 0;var b = 1;} console.log(a) // ReferenceError: a is not definedconsole.log(b) // 12、let没有变量提升在代码块内,使用let命令声明变量之前,该变量都是不可用的。这在语法上,蓝狮注册称为:暂时性死区,英文为:temporal dead zone,简称 TDZ。 //报错console.log(a)let a=103、let变量不能重复声明使用var,多次声明同一个变量,不会 ...
蓝狮注册开户现代JavaScript的高级概念和用法
JavaScript语言不断发布一些新特性,感觉要上天的节奏啊。本文搜集整理了一些它的高级概念和用法,来看看你是否都了解?代码这样写是不是更优雅了? 闭包闭包是Javascript中的一项重要技术,蓝狮注册内部函数始终可以访问其外部函数的变量和参数,即使在外部函数返回后也是如此。我们使用闭包来保护我们不想向外部范围公开的数据。 //Increase Counter //1. 全局变量,变量会被意外修改let counter = 0;function increaseCounter() {counter++;}//2. 局部变量,每次调用都重置为0function increaseCounter() {let count ...