Skip to content
Browse files

add FALSEHOODS.md

  • Loading branch information...
1 parent 48c0bb4 commit ea59a32797523e02c3d0e8e0427c6ce02f54ddb0 @dlyongemallo dlyongemallo committed
Showing with 120 additions and 0 deletions.
  1. +120 −0 FALSEHOODS.md
View
120 FALSEHOODS.md
@@ -0,0 +1,120 @@
+# Falsehoods Programmers Believe About Phone Numbers
+
+... and tips on how to use libphonenumber.
+
+Given how ubiquitous phone numbers are and how long they've been around, it's
+surprising how many false assumptions programmers continue to make about them.
+
+1. **Phone numbers that are valid today will always be valid. Phone numbers of
+ a certain type today (e.g., mobile) will never be reassigned to another
+ type.**
+
+ A phone number which connects today may be disconnected tomorrow. A number
+ which is free to call today may cost money to call tomorrow. The phone
+ company may decide to expand the range of available phone numbers by
+ inserting a digit into an existing number.
+
+ **Tip:** Don’t store properties for a phone number such as validity or
+ type. Check this information again from the library when you need it.
+
+1. **A phone number uniquely identifies an individual**
+
+ It wasn't even that long ago that mobile phones didn't exist, and it was
+ common for an entire household to share one fixed-line telephone number. In
+ some parts of the world, this is still true, and relatives (or even friends)
+ share a single phone number.
+
+1. **An individual has only one phone number**
+
+ Obviously, this isn't necessarily true.
+
+1. **Phone numbers cannot be re-used**
+
+ Old phone numbers are recycled and get reassigned to other people.
+
+1. **Each country calling code corresponds to exactly one country**
+
+ The USA, Canada, and several Caribbean islands share the country calling
+ code +1. Russia and Kazakhstan share +7. These are not the only examples!
+
+1. **Each country has only one country calling code**
+
+ As of this present moment (in Mar. 2016), phones in the disputed territory
+ and partially recognised state of Kosovo may be reached by dialing the
+ country calling code for Serbia (+381), Slovenia (+386), or Monaco (+377),
+ depending on where and when one obtained the number.
+
+ **Tip:** Use the phone widget to encourage users to enter their phone number
+ in an international format such that we can understand it.
+
+1. **A phone number is dialable from anywhere**
+
+ Some numbers can only be dialed within the country. Some can only be dialled
+ from within a subset of countries, such as the international 00800 numbers.
+ Some may be dialable only if the caller is a subscriber to a particular
+ telecom company.
+
+1. **There are only two ways to dial a phone number: domestically and from
+ overseas**
+
+ Some numbers may need different prefixes depending on: the carrier you are
+ using; what device you are dialling from/to; whether you are inside or
+ outside a particular geographical region.
+
+ Examples:
+ * In Brazil, to dial numbers internally but across a certain geographical
+ boundary, a carrier code must be explicitly dialed to say which carrier
+ you will use to pay for the call.
+ * In Nepal, the leading zero in national format is omitted depending on
+ whether the originating phone is mobile or fixed-line.
+ * In New Zealand, you need to dial the area-code (e.g. 03) even if the
+ number is within the same area-code region as you are, unless it is
+ "close" (something approximating city/district boundaries), in which
+ case it shouldn’t be dialled.
+
+ **Tip:** Use formatForMobileDialling to get the number a user should
+ actually dial on their mobile phone.
+
+1. **To make a number dialable, you only need to change the prefix**
+
+ In Argentina, to dial a mobile number domestically, the digits "15" need to
+ be inserted *after* the area code but *before* the local number, and the "9"
+ after the country code (54) needs to be removed. This transforms +54 9 2982
+ 123456 into 02982 15 123456.
+
+1. **No prefix of a valid phone number can be a valid phone number**
+
+ In some countries, it's possible to connect to a different endpoint by
+ dialing more digits after a number. So "12345678" may not reach the same
+ person as dialing "123456".
+
+1. **An invalid number will not reach an endpoint**
+
+ In some countries, or on some phones, extra digits are thrown away. Hence,
+ 1-800-MICROSOFT is an invalid number - but it still connects to Microsoft,
+ since any later digits are ignored. Numbers such as "911" can be reached by
+ dialling "911 123" in some countries: but not in others.
+
+ In other countries, invalid numbers may be "fixed" by a carrier, e.g.,
+ adding a mobile token if they know it is a mobile number, such that it
+ connects.
+
+1. **All valid phone numbers follow the ITU specifications**
+
+ ITU says things like "national numbers can not be longer than sixteen
+ digits" but valid numbers in Germany have been assigned that are longer than
+ this.
+
+1. **All valid phone numbers belong to a country**
+
+ There are many "country calling codes" issued to non-geographical entities,
+ such as "800" or satellite services.
+
+1. **Phone numbers contain only digits**
+
+ In Israel, certain advertising numbers start with a `*`.
+
+1. **Phone numbers are always written in ASCII**
+
+ In Egypt, it is common for phone numbers to be written in native digits.
+

0 comments on commit ea59a32

Please sign in to comment.
Something went wrong with that request. Please try again.