2019独角兽企业重金招聘Python工程师标准>>>

本文是转载,这是原文地址。

配置文件篇

1. 配置文件一定要写不只一个

比如 1.conf,2.conf,3.conf,... 而且这n个配置文件一定要分散在不同的目录下。才能让别人部署移植你这个项目的时候永远也修改不完配置文件。

2. 配置文件的载入一定不要在项目初始化的时候载入

比如我们这个项目是一个服务,一定要在每次socket请求来临的时候,我们再去读取一遍配置文件,首先这样我们能显著降低本服务的运行效率(磁盘IO的速度你懂的)。

最关键的是能让别人部署完这个项目的时候,明明配置文件写错了,但是部署运行仍然没有问题, 直到外部请求进来的时候,这个程序才华丽的崩溃掉。让人类知道程序的崩溃是如此的防不胜防。

3. 配置文件的格式一定要惜墨如金,只写value不写key

比如在如下配置文件

192.168.0.1
10011
192.168.0.2
10012
192.168.0.3
10013

让别人去猜,这到底是个什么东西,依次到底是哪些调用。 你懂的,预测和猜测都是程序员的必备技能之一,都大数据时代了,没点算命的天赋你以后还怎么搞大数据分析和预测?!

4. 你写的服务要监听的端口一定不要写在配置文件里面,一定要写死在代码里面

这样,当别人部署你的项目的时候,改完了配置文件,很开心的启动之后发现报错退出。 哦,原来是端口已经被占用。那我修改个端口呗,怎么修改,少年,去慢慢看源代码吧。哈哈哈。

日志篇

5. 一定不要打日志

打个毛日志?哥在eclipse,vs里面都是直接单步调试,舒畅无比。 什么刚启动加载配置啊,配置文件找不到啊,配置所需要的端口被占用啊之类的错误,都一定不要打出日志。

什么?每次请求进来到处理完成,都要打一条INFO日志?烦不烦?

一定要让别人启动整个项目之后,可以看到明明在运行。但是让外界死活调用不了。 打开xxx.log 文件一看,空荡荡,只有一句淡淡的“service started.” 仿佛在诉说着什么。

6. 打日志一定不要暴露时间,文件名等关键信息

当然要写的模糊一点,要知道如果日志写的太清晰,程序一出错,别人就知道错在哪里。 别人就可以根据错误时间和文件名定位到你的错误代码,这样让你的代码多没面子。

最好是在出错的地方打出一行”here is wrong.”,深藏功与名。 让接管或者部署你项目代码的人看得泪流满面。

外部依赖

7. 外部依赖一定不要包括进deps/之类的目录下

别人肯定以为拷贝了你整个目录的代码就可以运行起来,但是你显然不能让他们得逞。 要让他们一运行就报错,让他们知道你依赖了各种牛逼的库,这种库分布在linux各个匪夷所思的目录。

甚至你的账号家目录是/home/zhangsan/,你硬生生的依赖了/home/lisi/下的xxx.jar或者yyy.hpp文件,让他们慢慢找吧,幸福就在不远处。

8. 一定不要使用git/svn之类的版本控制软件

写代码多简单啊,不就是一个x.cpp y.java。更新代码就更简单了啊, 参照着x.cpp写呗,再来个x2.cpp,2太难听?那来个xnew.cpp。或者来个x20130101.cpp更加夺目。

当整个目录下面全是各数字后缀,y3.java, y4.java, y4s.java之后, 什么?别人觉得这样丑爆了?你要反驳他们说:吵什么吵,iphone也是这么版本命名的好吗。

9. 一定不要在README.md里面写明项目的启动方式和条件

这样才能给你的代码加上一层防盗标志,保密程度直逼iphone5s的指纹识别。 没有你的启动命令,休想使用你的代码。

总结

看上去很荒谬,但是其实以上这些都是实实在在作者亲身遇到的。 累觉不爱,以此为鉴。

转载于:https://my.oschina.net/songxinqiang/blog/550183

[转]如何写出不可维护的服务端程序相关推荐

  1. 封装利用libwebsockets写出的客户端、服务端程序为客户端服务端类

    封装利用libwebsockets写出的客户端.服务端程序为客户端服务端类 文章目录 封装利用libwebsockets写出的客户端.服务端程序为客户端服务端类 1.封装 2.封装后写wss客户端.服 ...

  2. java基础总结(三十一)--利用java代码写出http请求的服务端与客户端代码

    来自https://www.cnblogs.com/Nouno/p/5719010.html java开发接口利用http协议传输数据 这个接口主要用来登录,java服务器提供一个接口,移动设备客户端 ...

  3. OSI七层模型以及TCP/UDP客户端/服务端程序实例

    OSI七层模型以及TCP/UDP客户端/服务端程序实例 一.前言 二.OSI简介 2.1 OSI概念 2.2 划分原则 2.3 OSI七层模型 2.4 模型举例 三.Linux下TCP/UDP程序开发 ...

  4. 【技术分享】linux各种一句话反弹shell总结——攻击者指定服务端,受害者主机(无公网IP)主动连接攻击者的服务端程序(CC server),开启一个shell交互,就叫反弹shell。...

    反弹shell背景: 想要搞清楚这个问题,首先要搞清楚什么是反弹,为什么要反弹. 假设我们攻击了一台机器,打开了该机器的一个端口,攻击者在自己的机器去连接目标机器(目标ip:目标机器端口),这是比较常 ...

  5. 也谈如何构建高性能服务端程序

    引子:我接触过很多编程语言,接触过各种各样的服务器端开发,Java,Go,Ruby,Javascript等语言,Spring,Node.js,Rails等等常见服务器端框架和编程模型都有接触.这里谈一 ...

  6. 网络编程之TCP服务端程序开发

    TCP服务端程序开发 学习目标 能够写出TCP服务端应用程序接收和发送消息 1. 开发 TCP 服务端程序开发步骤回顾 创建服务端端套接字对象 绑定端口号 设置监听 等待接受客户端的连接请求 接收数据 ...

  7. 基于半同步/半反应堆线程池实现的HTTP解析服务端程序

    简介: 半同步/半反应堆线程池是通过一个线程往工作队列添加任务T,然后工作线程竞争工作队列获得任务T.HTTP请求解析服务端程序:逐行解析客户端发送来的HTTP请求然后作出HTTP回答.采用线程池就是 ...

  8. 如何在golang http服务端程序中读取2次Request Body?(转)

    转自知乎:如何在golang http服务端程序中读取2次Request Body? - 知乎 提问: 在golang http服务端程序中,我想在真正处理Request Body之前将Body中的内 ...

  9. 《精通并发与Netty》学习笔记(02 - 服务端程序编写)

    上节我们介绍了开发netty项目所必需的开发环境及工具的使用,这节我们来写第一个netty项目 开发步骤 第一步:打开https://search.maven.org 找到netty依赖库 第二步:打 ...

最新文章

  1. bottleneck resnet网络_关于ResNet及其变体的总结(上)
  2. 【RS】如何从USGS上下载LANDSAT数据
  3. vs调用matlab复杂,关于VS调用matlab的问题,求教大神
  4. Spring Boot 如何快速改造老项目?
  5. 数学建模——智能优化之粒子群模型详解Python代码
  6. 修改SAPSR3密码
  7. lvdt 运放全波整流接线方式_常见的几种二极管整流电路解析
  8. boost::process::shell相关的测试程序
  9. 画时域随机信号波形_【鼎阳硬件智库原创︱测试测量】任意波形发生器的基本输出波形及其相关参数...
  10. MFC 界面美化 Skinmagic
  11. 蓝桥杯 ADV-205 算法提高 拿糖果
  12. 苹果7手机html5测试,HTML5 基础测试题
  13. unity中Animation与Animator的区别
  14. Spring boot 内部服务调用 (FeignClient)
  15. javascript的发展(周边插件的由来)
  16. python - 接口自动化测试 - MysqlUtil - 数据库操作封装
  17. C和指针---读书笔记9
  18. 真实用!推荐一款与Swagger媲美的数据库文档生成工具...
  19. springboot的错误页面配置
  20. 华为交换机开启web管理

热门文章

  1. ExtJs 滚动条问题
  2. C语言入门(4)——常量、变量与赋值
  3. sharepoint 2010 彻底删除用户
  4. C#多线程使用进度条
  5. winform程序最大化时,页面显示不全的问题
  6. dart初始化项目的分析
  7. IOS基础之仿酷狗音乐第1天
  8. android实现首页倒计时,android 利用CountDownTimer实现时分秒倒计时效果
  9. python下载包管理器_Python包管理整理:setuptool管理python相关的包
  10. echo怎么把日志清空_电脑越来越卡到底怎么办?一分钟教你释放C盘空间,瞬间提速5倍...